PHPExcel 保存时出错

M A*_*ver 3 php phpexcel

我正在使用 PHPExcel 导出报告。

\n\n

当我在互联网上运行它时(使用 PHP 5.6),它给了我一个错误。

\n\n

但是,当我在本地主机上进行测试时,一切都很好。完美运行(使用 PHP 5.4.31)

\n\n

这是我的代码

\n\n
function 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}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我删除代码时会发生奇怪的事情$objWriter->save(\'php://output\');。它要求保存 Excel,但 Excel 文件无法打开,因为它已损坏。

\n\n

*编辑

\n\n
    \n
  • 错误是

    \n\n

    无法访问此网站\xe2\x80\x99\n位于http://my-link-in-here 的网页可能暂时无法访问,或者可能已永久移至新网址。\nERR_INVALID_RESPONSE

  • \n
\n\n

*更新

\n\n
    \n
  • 我尝试添加ob_end_clean();ob_clean();之前$objWriter->save(\'php://output\');并保存Excel,但我无法打开它,因为Excel显示“文件格式或文件扩展名无效”。

  • \n
  • 我尝试将xlsx扩展名更改为xlsonfilename属性,现在可以打开 Excel。但它显示 php 错误Message: ob_end_clean(): failed to delete buffer. No buffer to delete

  • \n
  • 我尝试保留扩展名,但删除了ob_end_clean();,然后错误再次出现。

  • \n
\n\n

*解决方案 :

\n\n
    \n
  • 我将代码更改为Excel5这样

    \n\n
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, \'Excel5\');\nheader(\'Content-Type: application/vnd.ms-excel\');\nheader(\'Content-Disposition: attachment;filename="userList.xls"\');\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    它的作用就像冠军一样。任何人都可以做出解释吗?我会将解决方案交给能够解释的人

  • \n
\n

小智 5

尝试安装 ZipArchive 类,即sudo apt-get install php7.0-zip

因为这可能是新组建的服务器的问题。(对我来说)