thinkPHP3.2 进行Excell导出

我们首先下载一个第三方的一个扩展包PHPExcel包,下载地址http://phpexcel.codeplex.com/

引入到到thinkPHP里的第三方扩展Library/Vendor/PHPExcel.

代码如下:

公共方法:

/*导出日志的excel方法*/

function exportExcel($expTitle,$expCellName,$expTableData){

$xlsTitle = iconv(‘utf-8‘, ‘gb2312‘, $expTitle);//文件名称

$fileName = $expTitle.date(‘_YmdHis‘);//or $xlsTitle 文件名称可根据自己情况设定

$fileName = iconv("utf-8", "gb2312", $fileName);

$cellNum = count($expCellName);

$dataNum = count($expTableData);

vendor(‘PHPExcel.PHPExcel‘);

$objPHPExcel = new PHPExcel();

$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].‘2‘, $expCellName[$i][1]);

}

// Miscellaneous glyphs, UTF-8

for($i=0;$i<$dataNum;$i++){

for($j=0;$j<$cellNum;$j++){

$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);

}

}

ob_end_clean();//清除缓冲区,避免乱码

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本窗口打印

$arr = array_chunk($cellName,$cellNum,true);

foreach($arr[0] as $val){

$objPHPExcel->getActiveSheet()->getColumnDimension($val)->setWidth(30);

for($i=1;$i<=$dataNum+2;$i++){

$a=$objPHPExcel->getActiveSheet()->getStyle($val.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

}

}

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);

$objWriter->save(‘php://output‘);

exit;

}

/**

*

* 执行导出Excel文件

*/

function doexportexcel(){//导出Excel

$time = intval(I(‘times‘));

if(empty($time)){

$this->error(‘请选择时间范围!‘);

}

switch ($time) {

case 1:

$mytime  = strtotime(date("Y-m-d H:i:s", strtotime("-3 month")));//三个月前的时间点

$where[‘operate_time‘] =array(‘gt‘,$mytime);

break;

case 2:

$mytime  = strtotime(date("Y-m-d H:i:s", strtotime("-1 year")));//一年前的时间点

$where[‘operate_time‘] =array(‘gt‘,$mytime);

break;

default:

$this->error(‘非法操作!‘);

break;

}

$xlsName  = "日志管理";

$xlsCell  = array(

array(‘id‘,‘ID号‘),

array(‘description‘,‘行为名称‘),

array(‘operator‘,‘执行者‘),

array(‘operate_time‘,‘执行时间‘),

array(‘ip‘,‘执行IP‘),

array(‘url‘,‘操作url‘),

array(‘status‘,‘状态‘),

);

$xlsModel = M(‘logs‘);

$xlsData  = $xlsModel->Field(‘id,description,operator,operate_time,ip,url,status‘)->order(‘operate_time DESC‘)->where($where)->select();

foreach ($xlsData as $k => $v)

{

$xlsData[$k][‘status‘]=$v[‘status‘]==1?‘失败‘:‘成功‘;

$xlsData[$k][‘operate_time‘]=date(‘Y-m-d H:i:s‘,$v[‘operate_time‘]);

}

exportExcel($xlsName,$xlsCell,$xlsData);

}

时间: 2024-08-28 21:18:08

thinkPHP3.2 进行Excell导出的相关文章

phpexcel导出excel的数据超过26列怎么办 Invalid cell coordinate [1(THINKPHP3.2中开发遇到的)

最近有个需求,THINKPHP3.2中对数据进行导出,数据一共有43项,导出时候就会抱错 Invalid cell coordinate [1 因为phpexcel 的cell.php里默认就设置了26列,而且判断方法里默认从a-z然后下一个列就是aa1了 ,而实际上在excel里z后面应该是AA,AB,AC,AD,AE,AF这样 所以需要改判断方法,我之前写过一篇excel的导出,只需要吧其中一个方法改动一下,改动的思想就是 当超过26列的时候 下一列命名应该是AA,AB,而不是  aa1,A

POI跨行导出excell表格实现.md

# POI跨行导出excell表格实现### 需求:需要导出父子级关系的元素,父级需要跨行显示,子级需要单独显示. ### 由于数据库中的数据存的是子级存父级的ID形式,所以需要将数据包装,自己将装在父级下的list中,本案例将会包装成五级子级形式. ### 第一步:首先写sql ,sql中要计算出父级需要跨的行数.(思路:首先自身内连接,计算出每一级需要跨的行数,在与主表相连将跨行数关联上去) ```xml <select id="findList" resultType=&q

POI跨行导出excell表格实现

POI跨行导出excell表格实现 需求:需要导出父子级关系的元素,父级需要跨行显示,子级需要单独显示. 由于数据库中的数据存的是子级存父级的ID形式,所以需要将数据包装,自己将装在父级下的list中,本案例将会包装成五级子级形式. 第一步:首先写sql ,sql中要计算出父级需要跨的行数.(思路:首先自身内连接,计算出每一级需要跨的行数,在与主表相连将跨行数关联上去) <select id="findList" resultType="OcScope">

Thinkphp3.2 PHPexecl 导出

1 下载phpexecl  放入到tp里边. 路径如下:项目根目录\ThinkPHP\Library\Org\Util 2  PHP 代码部分 封装一个方法 private function getExcel($fileName,$headArr,$data){ //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入 import("Org.Util.PHPExcel"); import("Org.Util.PHPExcel.Writer.Ex

ThinkPHP3.2.3 结合 PHPExcel 导出

/** * * 导出Excel   调用 */ function export(){ $xlsName = "Qrcode"; $xlsCell = array( array('qrid','序列'), array('theonly','唯一码'), array('tag','回复语模板'), array('product_name','产品名称'), array('click','点击量'), array('qrcode_pic','二维码图片'), array('add_time'

thinkphp3.1(3.2同理)整合phpExcl 实现数据导出功能

将下载到的phpExcl文件放到org文件夹下面 //导出    public function push(){ $goods_list = M('数据表')->select();        $data = array();        foreach ($goods_list as $k=>$goods_info){            $data[$k][id] = $goods_info['id'];            $data[$k][dingwei] = $goods_

ThinkPHP3.2 下载、导入、导出功能的设计与实现

下载: 1.引入命名空间: use Org\Net\Http; 2.在入口文件中设置根目录: //定义根目录的绝对地址 define('ROOT',str_replace("\\","/",dirname(__FILE__))); //定义根目录外的地址 define('UPLOAD_PATH',str_replace("\\","/",dirname(dirname(__FILE__)))); 3.控制器中的操作: publ

ThinkPHP3.2.3使用PHPExcel类操作excel导出excel

如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel"); import("Org.Util.PHPExccel.Reader.Excel5"); // 创建Excel文件对象 $excel = new \PHPExcel(); // 设置文档信息,这个文档信息windows系统可以右键文件属性查看,.xls时有效$excel-&g

thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

1 到这里下载classes里面的文件 https://github.com/PHPOffice/PHPExcel 2 然后放到 thinkphp的vendor 新建一个文件夹 Phpexcel  然后把文件放进去 3 在封装一个函数 function exportExcel($data, $savefile = null, $title = null, $sheetname = 'sheet1') { vendor('Phpexcel.PHPExcel'); //从PHPMailer目录导cl