您的位置 首页 php

PHPExcel插件导出Excel

第一步:导出字段设置

(1)准备导出的字段,存放在:Conf/purchaseExport.php

<?php

return array (

‘sname’ => ‘仓库名称’,

‘title’ => ‘产品名称’,

‘standard’ => ‘规格’,

‘unit’ => ‘单位’,

‘buyprice’ => ‘单价’,

‘goods_num’ => ‘采购数量’,

‘total_money’ => ‘总价’,

‘purchase_time’ => ‘采购时间’,

);

(2)修改purchaseExport.php

控制器代码:

//采购订单导出字段设置

Public function purchaseExport(){

$ file name=$this->_get(‘type’);

if(IS_POST){

$this->setExportField($filename);

}else{

$this->file= include CONF_PATH.’purchaseExport.php’;

$this->display();

}

}

/*

* 设置要导出的字段

*/

private function setExportField($filename){

$fieldFile = CONF_PATH.$filename.’.php’;

$str = “<?phprnreturn ” . var_export($_POST, true) . “;rn?>”;

file_put_contents($fieldFile, $str);

redirect(‘$filename’);

}

前台模板代码:

详见MyAccount/purchaseExport.html

第二步:调用第三方插件PHPExcel导出指定条件的Excel文档数据

/*

* 导出采购订单

*/

public function purchaseExport(){

$file=include APP_NAME.’/Conf/purchaseExport.php’;

unset($_REQUEST[‘_URL_’]);

$this->setCondition($_REQUEST);//调用查询条件处理方法

$purchase = D(‘Purchase_orderView’)->where($this->conditions)->select();//获取要导出的数据

$purchase=$this->purchaseInfo($purchase);

$this->excelExport($file, $purchase);//调用导出Excel文档的函数

}

/**

* 导出Excel文档的函数

* @param unknown $file [要导出的字段]

* @param unknown $data [要导出的数据]

*/

public function excelExport($file,$data){

import(“Class.PHPExcel.PHPExcel”,APP_PATH);

$objPHPExcel = new PHPExcel();

$objProps = $objPHPExcel->getProperties();

$objProps->setCreator(“School System”);

$objProps->setLastModifiedBy(“School System”);

$objProps->setTitle(“School System”);

$objProps->setSubject(“School System Data”);

$objProps->setDescription(“School System Data”);

$objProps->setKeywords(“School System”);

$objProps->setCategory(“School System”);

$objPHPExcel->setActiveSheetIndex(0);

$objActSheet = $objPHPExcel->getActiveSheet();

$objActSheet->setTitle(‘Sheet1’);

//设置标题

$ascii = 65;

$cv = ”;

foreach ($file as $v){

$objActSheet->setCellValue($cv.chr($ascii).’1′, $v);

$ascii++;

if($ascii == 91){

//第一次:$cv=A;第二次:$cv=B

$ascii = 65;

$cv .= chr(strlen($cv)+65);

}

}

//填充数据

$i = 1;

foreach ($data as $k => $v) {

//一条记录填充一行

$i++;

$ascii = 65;

$cv = ”;

foreach($file as $key => $value){

$objActSheet->setCellValue($cv.chr($ascii).$i, $v[$key]);

$ascii++;

if($ascii == 91){

//第一次:$cv=A;第二次:$cv=B

$ascii = 65;

$cv .= chr(strlen($cv)+65);

}

}

}

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

header (“Content-Type: application/vnd.ms-excel;”);

header(“Content-Disposition:attachment;filename=MyAccount_”.date(‘d’,mktime()).”. xlsx “);

header(“Pragma:no-cache”);

header(“Expires:0”);

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

}

第三步:导入/导出Excel文档错误分析

声明:所有的PHP文档的编码格式必须是“UTF-8无BOM格式编码”

一般是由于你的服务器配置了其他的压缩方式导致冲突,

这个时候你可以手动关闭OUTPUT_ENCODE(ThinkPHP3.1后新增的功能,默认是开启的),

即:’OUTPUT_ENCODE’=> false (在配置文件中设置即可,3.1以后才支持配置)

如果想正确输出Excel文档,则在配置文件中需增加一句:

‘OUTPUT_ENCODE’ => false//关闭“页面压缩功能”(默认是开启的!!!)

前言:

3.1版本开始,增加了OUTPUT_ENCODE配置参数,用于控制页面压缩输出。

会自动检测zlib.output_compression配置,如果php. ini 里面

zlib.output_compression没有开启,

并且OUTPUT_ENCODE配置开启,则会进行页面压缩输出==>

Excel文档不能够正确输出!!!

php. ini文件 修改:

extension=php_gettext. dll

extension=php_xmlrpc.dll

extension=php_zip.dll

文章来源:智云一二三科技

文章标题:PHPExcel插件导出Excel

文章地址:https://www.zhihuclub.com/152507.shtml

关于作者: 智云科技

热门文章

网站地图