PHPExcel插件生成exel表:有的excel能打开,有的excel打不开
PHPExcel导出xls无法打开文件问题
在header之前,通过清除缓冲区:ob_end_clean();然后excel打开就正常了;亲测,有效。
PHPExcel插件生成exel表:有的excel能打开,有的excel打不开;
如图
修改代码,在导出的时候添加:ob_end_clean();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | public function AntiExportData($list) { // error_reporting(0); $objPHPExcel = new \PHPExcel(); //设置文件的一些属性,在xls文件——>属性——>详细信息里可以看到这些值,xml表格里是没有这些值的 $objPHPExcel ->getProperties() //获得文件属性对象,给下文提供设置资源 ->setCreator( "MaartenBalliauw" ) //设置文件的创建者 ->setLastModifiedBy( "MaartenBalliauw" ) //设置最后修改者 ->setTitle( "Office2007 XLSX Test Document" ) //设置标题 ->setSubject( "Office2007 XLSX Test Document" ) //设置主题 ->setDescription( "Test document for Office2007 XLSX, generated using PHP classes." ) //设置备注 ->setKeywords( "office 2007 openxmlphp" ) //设置标记 ->setCategory( "Test resultfile" ); //设置类别 // 位置aaa *为下文代码位置提供锚 //给表格添加数据 $objPHPExcel->setActiveSheetIndex(0) //表头的信息 ->setCellValue( 'A1' , "ID" ) ->setCellValue( 'B1' , "防伪码" ) ->setCellValue( 'C1' , "序列号" ) ->setCellValue( 'D1' , "可获得积分" ) ->setCellValue( 'E1' , "状态" ) ->setCellValue( 'F1' , "会员" ) ->setCellValue( 'G1' , "查询时间" ) ->setCellValue( 'H1' , "导入时间" ); $i=2; foreach ($list as $key => $value) { if ($value[ 'state' ] == 1){ $state = '已查询' ; } else { $state = '未查询' ; } if ($value[ 'state' ] == 1 && $value[ 'nickname' ]){ $nickname = $value[ 'nickname' ]. '(已兑换)' ; } else { $nickname = '未兑换' ; } if ($value[ 'export_time' ] == null ){ $export_time = '' ; } else { $export_time = date( "Y-m-d H:i:s" , $value[ 'export_time' ]); } if ($value[ 'import_time' ] == null ){ $import_time = '' ; } else { $import_time = date( "Y-m-d H:i:s" , $value[ 'import_time' ]); } $objPHPExcel->getActiveSheet() // 设置第一个内置表(一个xls文件里可以有多个表)为活动的 ->setCellValue( 'A' .$i, $value[ 'id' ] ) //给表的单元格设置数据 ->setCellValue( 'B' .$i, $value[ 'anti_counterfeiting_code' ] ) //给表的单元格设置数据 ->setCellValue( 'C' .$i, $value[ 'serial_number' ] ) ->setCellValue( 'D' .$i, $value[ 'integral' ]) ->setCellValue( 'E' .$i, $state ) ->setCellValue( 'F' .$i, $nickname ) ->setCellValue( 'G' .$i, $export_time) //布尔型 ->setCellValue( 'H' .$i, $import_time); $i++; } //公式 //得到当前活动的表,注意下文教程中会经常用到$objActSheet $objActSheet =$objPHPExcel->getActiveSheet(); // 位置bbb *为下文代码位置提供锚 //给当前活动的表设置名称 $objActSheet->setTitle( 'Simple2222' ); //代码还没有结束,可以复制下面的代码来决定我们将要做什么 ob_end_clean(); //1,直接生成一个文件 $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007' ); $objWriter->save( 'myexchel.xlsx' ); header( 'Content-Type:application/vnd.ms-excel' ); header( 'Content-Disposition:attachment;filename="防伪数据.xls"' ); header( 'Cache-Control:max-age=0' ); $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5' ); $objWriter->save( 'php://output' ); return $ this ->render($ this ->actionID); } |
亲测,有效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2017-07-09 java:管道流(线程间管道流)
2017-07-09 java:内存处理ByteArrayOutputStream,ByteArrayInputStream
2013-07-09 JSP中scope属性 scope属性决定了JavaBean对象存在的范围