我正在使用 PHPExcel 导出报告。
\n\n当我在互联网上运行它时(使用 PHP 5.6),它给了我一个错误。
\n\n但是,当我在本地主机上进行测试时,一切都很好。完美运行(使用 PHP 5.4.31)
\n\n这是我的代码
\n\nfunction downloadExcelBrand($brand,$tglAwal,$tglAkhir)\n{\n\n $this->load->library(\'php_excel\');\n\n $objPHPExcel = new PHPExcel(); \n // print_r($objPHPExcel);die();\n $objPHPExcel->setActiveSheetIndex(0);\n\n $objPHPExcel->getActiveSheet()->SetCellValue(\'A1\', "Concept");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'B1\', $brand);\n\n $objPHPExcel->getActiveSheet()->SetCellValue(\'A2\', "Period");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'B2\', $tglAwal." to ".$tglAkhir);\n\n $objPHPExcel->getActiveSheet()->SetCellValue(\'A5\', "Boutique");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'B5\', "Q1");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'C5\', "Q2");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'D5\', "Q3");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'E5\', "Q4");\n $objPHPExcel->getActiveSheet()->SetCellValue(\'F5\', "BBC Score");\n\n $data = $this->surveymodel->getDataLaporanBrand($brand,$tglAwal,$tglAkhir);\n // print_r($data);die();\n $i = 5;\n foreach ($data as $index=>$value) {\n // print_r($data[$index+1]);die();\n if( $index%4 == 0){\n $i++;\n // print_r($value["Score"]);print_r($value[\'TotalData\']);die();\n $AvgQ1 = $value["Score"] / $value[\'TotalData\'];\n // print_r($AvgQ1);die();\n $AvgQ2 = $data[$index+1]["Score"]/$data[$index+1][\'TotalData\'];\n $AVGQ3 = $data[$index+2]["Score"]/$data[$index+2][\'TotalData\'];\n $AvgQ4 = $data[$index+3]["Score"]/$data[$index+3][\'TotalData\'];\n $BSC = $AvgQ1+$AvgQ2+$AVGQ3+$AvgQ4;\n\n $objPHPExcel->getActiveSheet()->SetCellValue(\'A\'.$i, $value["boutiqueID"]);\n $objPHPExcel->getActiveSheet()->SetCellValue(\'B\'.$i, $AvgQ1);\n $objPHPExcel->getActiveSheet()->SetCellValue(\'C\'.$i, $AvgQ2);\n $objPHPExcel->getActiveSheet()->SetCellValue(\'D\'.$i, $AVGQ3);\n $objPHPExcel->getActiveSheet()->SetCellValue(\'E\'.$i, $AvgQ4);\n $objPHPExcel->getActiveSheet()->SetCellValue(\'F\'.$i, $BSC);\n }\n }\n\n // Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file\n $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); \n // Write the Excel file to filename some_excel_file.xlsx in the current directory\n header(\'Content-type: application/vnd.ms-excel\');\n // It will be called file.xls\n header(\'Content-Disposition: attachment; filename="Report_By_Brand.xlsx"\');\n // Write file to the browser\n $objWriter->save(\'php://output\');\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当我删除代码时会发生奇怪的事情$objWriter->save(\'php://output\');。它要求保存 Excel,但 Excel 文件无法打开,因为它已损坏。
*编辑
\n\n错误是
\n\n无法访问此网站\xe2\x80\x99\n位于http://my-link-in-here 的网页可能暂时无法访问,或者可能已永久移至新网址。\nERR_INVALID_RESPONSE
*更新
\n\n我尝试添加ob_end_clean();或ob_clean();之前$objWriter->save(\'php://output\');并保存Excel,但我无法打开它,因为Excel显示“文件格式或文件扩展名无效”。
我尝试将xlsx扩展名更改为xlsonfilename属性,现在可以打开 Excel。但它显示 php 错误Message: ob_end_clean(): failed to delete buffer. No buffer to delete
我尝试保留扩展名,但删除了ob_end_clean();,然后错误再次出现。
*解决方案 :
\n\n我将代码更改为Excel5这样
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, \'Excel5\');\nheader(\'Content-Type: application/vnd.ms-excel\');\nheader(\'Content-Disposition: attachment;filename="userList.xls"\');\nRun Code Online (Sandbox Code Playgroud)\n\n它的作用就像冠军一样。任何人都可以做出解释吗?我会将解决方案交给能够解释的人
| 归档时间: |
|
| 查看次数: |
20645 次 |
| 最近记录: |