用PHPExcel导出的个人总结
2017-04-04 16:36
302 查看
再使用PHPExcel过程当中遇到过几个问题,总结一下,以备查询.
有时候导出会有打不开的问题,总结了下,可以尝试这样解决:
1.报warning,在第一行加了这行代码:
error_reporting(0);
这行代码的作用就是把warning,error等等的信息不显示出来。
最后执行,导出来的excel文件就可以顺利打开了。
2.有时候打不开,是后缀名的xlsx和xls的不同.试试把下载下来的文件后缀名为xlsx改为xls就能打开,看看具体报什么错!!
有时候打开是乱码总结如下:
1.有人说是Bom头的问题,不过我暂时还没有遇到.但是也是其中之一的影响因素.
2.phpexcel导出来的是乱码,是因为导出的时候字符集的问题,没有设置好,看看导出时的代码以及整个文档的编码!!最好导出的时候是utf-8的格式.其他的格式没有深入研究!
导出来的Excel是空白的:
1.空白的话 只能是数据没有放正确!!!逐步打印看看数据的正确性!
2.我的代码里面是按照下标索引的方式去填入数据表,所以如果最后的数组格式不一致,一样会导致导出的表是空白!
特别是在TP框架下面最重要的一点,在使用PHPExcel的时候,所有的实例化前面要加\,否则会报错,找不到类啊等等.
导出的时候提示Class 'XMLWriter' not found,解决方法是:
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
改为
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5')
下面是我的代码,mark一下.
有时候导出会有打不开的问题,总结了下,可以尝试这样解决:
1.报warning,在第一行加了这行代码:
error_reporting(0);
这行代码的作用就是把warning,error等等的信息不显示出来。
最后执行,导出来的excel文件就可以顺利打开了。
2.有时候打不开,是后缀名的xlsx和xls的不同.试试把下载下来的文件后缀名为xlsx改为xls就能打开,看看具体报什么错!!
有时候打开是乱码总结如下:
1.有人说是Bom头的问题,不过我暂时还没有遇到.但是也是其中之一的影响因素.
2.phpexcel导出来的是乱码,是因为导出的时候字符集的问题,没有设置好,看看导出时的代码以及整个文档的编码!!最好导出的时候是utf-8的格式.其他的格式没有深入研究!
导出来的Excel是空白的:
1.空白的话 只能是数据没有放正确!!!逐步打印看看数据的正确性!
2.我的代码里面是按照下标索引的方式去填入数据表,所以如果最后的数组格式不一致,一样会导致导出的表是空白!
特别是在TP框架下面最重要的一点,在使用PHPExcel的时候,所有的实例化前面要加\,否则会报错,找不到类啊等等.
导出的时候提示Class 'XMLWriter' not found,解决方法是:
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
改为
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5')
下面是我的代码,mark一下.
if(!empty($_POST['out'])) { error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); if (PHP_SAPI == 'cli') die('This example should only be run from a Web Browser'); /** Include PHPExcel */ require_once dirname(__FILE__) . '/PHPExcel.php';//不同的地方,请写入不同的路径 // Create new PHPExcel object $objPHPExcel = new PHPExcel();//初始化主类. // Set document properties 设置属性 $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("Office 2007 XLSX Test Document") ->setSubject("Office 2007 XLSX Test Document") ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") ->setKeywords("office 2007 openxml php") ->setCategory("Test result file"); // Miscellaneous glyphs, UTF-8 //将要获取目标表数据,这个地方我用的是TP框架,所以这样写,不同的框架,有不同拿到数据的方法,请根据自己情况自定义 $list = $User->where('sell=1')->field('giftpic,id,giftname,des,credit,number,sell,addtime')->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select(); foreach($list as $a=>$b){ $lamp[] = array_values($b);//把关联数组的下表,换成索引,方便后面的调用 } // 获取目标表的所有字段 $fields = $User->getDbFields(); foreach($fields as $f=>$d){ $ff[][] = $d; } //自己写的excel列名,如果超过26个,超过52个,78个的不同情况,给不同的列名.可以自己再加. $s = 'abcdefghijklmnopqrstuvwxyz'; $aa = str_split($s,1); $b=array(); for($i=0;$i<count($ff);$i++){ if($i<26){ $b[$aa[$i]]=$i; }else if($i<52){ $m='A'; $b[$m.$aa[$i-26]]=$i; }else if($i<78){ $m='B'; $b[$m.$aa[$i-52]]=$i; } } //这个地方,我是自定义的表头,就是导出之后的Excel的第一行,根据自己需要自定义. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('a1','图片'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('b1','ID'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('c1','名称'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('d1','余额'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('e1','积分'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('f1','库存数'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('g1','兑换数'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('h1','添加时间'); foreach($lamp as $i=>$v) { foreach($b as $kk => $vv) { mb_convert_encoding($v[$vv], "UTF-8"); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($kk.($i+2),$v[$vv]);//把数据写入进去Excel } } // Rename worksheet $objPHPExcel->getActiveSheet()->setTitle('vip');//自定义工作表的名称,可自定义. // Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); ob_end_clean();//清除缓冲区的内容,以防导出的内容乱码,不能打开等问题,加上最好. // Redirect output to a client’s web browser (Excel2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="01simple.xlsx"'); header('Content-Type: application/vnd.ms-excel;charset=gb2312');//自定义的字符集 header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//导出的方法实例化 4000 $objWriter->save('php://output');//导出 exit; }
相关文章推荐
- 关于excelphp的调用 导入导出(个人学习总结)
- 【学习点滴-php】使用phpExcel类导出excel文件相关问题总结
- Atitit.导出excel报表的设计与实现java .net php 总结
- 总结 php导出Excel php
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- 总结 php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- 超实用的PHPExcel[导入][导出]实现方法总结
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- PHPExcel导出Excel方法总结——ThinkPHP3
- 超实用的PHPExcel[导入][导出]实现方法总结
- 超实用的PHPExcel[导入][导出]实现方法总结
- PHPExcel导出Excel方法总结——ThinkPHP5
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- PHPExcel中导出数据报错!个人遇见的问题,用的laravel框架
- 总结 php导出Excel php
- 总结 php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册
- php数据导入导出之excel(csv文件)
- html页面表格导出到excel总结
- php数据导入导出之excel(csv文件)
- html页面表格导出到excel总结