thinkPHP5.0框架

查询数据库调用Excel方法

public function exportlist(){
$orderModel = new OrderModel();
if($start_time = $this->request->param('start_time','')){
$orderModel->where(function($query) use($start_time) {
$query->where('created_at','>=',$start_time);
});
}
if($end_time = $this->request->param('end_time','')){
$orderModel->where(function($query) use($end_time) {
$query->where('created_at','<=',$end_time);
});
} $expTitle = '详细营销单'.date('Y-m-d');
//数据库的字段, '名字', '宽度
$expCellName = [
['rec_code','推荐人',15],
['pro_code','产品',15],
['price','金额',8],
['sell_code','营销人',15],
['created_at','日期',20],
];
$expTableData = $orderModel->order('id','desc')->select()->toArray(); if($expTableData){
$this->exportListExcel($expTitle,$expCellName,$expTableData);
}
}

Excel导出方法

public function exportListExcel($expTitle,$expCellName,$expTableData){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
$fileName = $xlsTitle;
$cellNum = count($expCellName);
$dataNum = count($expTableData);
Loader::import('PHPExcel.Classes.PHPExcel');
Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
Loader::import('PHPExcel.Classes.PHPExcel.Reader.Excel5'); $objPHPExcel = new \PHPExcel();
// 居中
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal('center');
$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical('center');
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); // $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
$objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth($expCellName[$i][2]);
}
// Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]);
}
} header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}

PHP导入Excel

public function excel(){
if($this->request->isPost()){
if (!empty($_FILES)) {
if(!in_array(cmf_get_file_extension($_FILES['file']['name']),['xlsx','xls'])){
$this->error('请上传Excel格式的文件!', '');
}
$uploader = new Upload();
$uploader->setFileType('file');
$result = $uploader->upload();
if ($result) {
Loader::import('PHPExcel.Classes.PHPExcel');
Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
Loader::import('PHPExcel.Classes.PHPExcel.Reader.Excel5'); $filename = ROOT_PATH .'public'. $result['preview_url']; //文件路径
$extension = cmf_get_file_extension($result['name']); //文件扩展名
if ($extension == 'xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filename, $encode = 'utf-8'); //加载文件内容,编码utf-8
} else if ($extension == 'xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($filename, $encode = 'utf-8'); //加载文件内容,编码utf-8
} else {
$this->error('请上传Excel格式的文件!', '');
}
//$excel_array = $objPHPExcel->getsheet(0)->toArray(); //转换为数组格式
$sheet =$objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();//取得总行数
//$highestColumn =$sheet->getHighestColumn(); //取得总列数
for($i=2;$i<=$highestRow;$i++){
if($value = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue()){
if(!Db::name('sell')->where('sell_code',$value)->find()){
$data[] = ['sell_code'=>$value];
}
}
} if (Db::name('sell')->insertAll ($data)) {
$this->success('导入数据成功!', url('AdminSell/index'));
} else {
$this->error('导入数据失败!', '');
}
} else {
$this->error($uploader->getError(), '');
}
}
}
}

还有一种比较简单,快捷的方法, 不需要因为额外的文件或者composer, 就是直接输出excel文件.

只需要一个方法(适合菜鸟使用)

/**
* Author 963087326@qq.com
* 导出excel
* @param array $data 导出数据
* @param array $a excel表头
* @param string $b 导出的文件名
* @return file
*/
function excel($data,$a,$b=null){
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=".$b.".xls");
header("Pragma: no-cache");
header("Expires: 0"); //$a=['第一列','第二列','第三列'];
foreach ($a as $k => $v) {
$a[$k]=iconv("UTF-8", "GB2312//IGNORE",$v);
}
//输出表头
echo implode(' ',$a)."\n";
foreach ($data as $key => $value) {
$arr = array();
foreach ($value as $kk => $vv) {
if(empty($vv) || $vv=='无' ){
$vv='--';
}
$j=iconv("UTF-8", "GB2312//IGNORE",$vv);
$arr[]= trim($j);
}
//输出数据
echo implode(' ',$arr)."\n";
}
//$b=[1,2,3];
}
快捷翻译 - 快到离谱!

 

 
划词翻译
自动发声
自动添加生词本

用PHPExcel导出导入Excel的更多相关文章

  1. PHPExcel导出导入excel、csv等格式数据

    <?php if(!defined('BASEPATH')) exit('No direct script access allowed'); //物资发料单明细 class Read_writ ...

  2. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  3. php利用PHPExcel类导出导入Excel用法

    PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...

  4. php 导出导入excel

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 链接: https://pan.baidu ...

  5. 【tp5.1】通过PHPExcel实现导入excel表格

    1.上github下载PHPExcel,链接:https://github.com/PHPOffice/PHPExcel 2.下载解压后,将Classes改名为PHPExcel如图 3.将文件夹复制到 ...

  6. PHPExcel导出导入

    便于记忆 这里写一个PHPexcel导出的demo 我们构造一个数据   $letter = array('A','B','D','E'); //sheet索引   $date = array( ar ...

  7. DevExpress XtraGrid 数据导出导入Excel

    // <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...

  8. C# winform 导出导入Excel/Doc 完整实例教程[网上看到的]

    还真没做过winform的导出导入,今天上网百度了一下.结果--- 所以还是我自己写个吧.之前做过web的,半搬半做就OK. 1添加引用:Aspose.Cells.dll(我们就叫工具包吧,可以从网上 ...

  9. asp.net core导出导入excel

    使用NPOI导入导出excel,已经封装好Action可以直接调用 导出 效果图 使用方法 定义导出实体 class Student { public int Id { get; set; } pub ...

随机推荐

  1. tornado自定义session

    这开始之前我们先了解以下什么是cookie和session 简单的说: cookie是保存在客户端的键值对 session是保存在服务端的键值对 session依赖与cookie 在Django中,可 ...

  2. 【UOJ295】【ZJOI2017】线段树 倍增

    题目大意 http://uoj.ac/problem/295 题解 考虑像 zkw 线段树一样,从 \([l-1,l-1],[r+1,r+1]\) 这两个区间开始往上跳,直到两个指针碰到一起为止. 先 ...

  3. Supercomputer 解题报告

    Supercomputer 设\(f_i\)为前\(i\)个时间内必须的完成的任务个数,那么答案就是 \[ \max_{i}\lceil\frac{f_i}{i}\rceil \] 现在要支持区间加和 ...

  4. 微信小程序wepy框架开发资源汇总

    开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的树洞类微信小程序 wepy-demo-bookmall:微信小程序

  5. python之路day02--格式化输出、初始编码、运算符

    格式化输出 格式化输出替换字符串.字符串中%占位符,,%%s就是代表百分号,不代表占位符s 字符串 stringd 数字 dight name = input('请输入你的名字:') age = in ...

  6. pymongo 使用方法(增删改查)

    #!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...

  7. Burnside引理的感性证明

    \(Burnside\)引理的感性证明: 其中:\(G\)是置换集合,\(|G|\)是置换种数,\(T_i\)是第\(i\)类置换中的不动点数. \[L = \frac{1}{|G|} * \sum ...

  8. StringJdbc :jdbcTemplate

    Spring框架对Jdbc进行了封装 提供了一个JDBCTemplated对象简化Jdbc开发 步骤 1 导包 2 创建JDBCTemplate 对象 依赖于DataSource 3 调用JDBCTe ...

  9. C# 执行DOS命令和批处理

    在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...

  10. C# 另一种提交表单

    一般提交表单的方式就是:Get,Post 以及关联action 今天看了一种方式感觉不错: 可以在submit里面写 PostBackUrl="XXXX",即回发的URL,可以实现 ...