我正在使用PHPExcel导出报告。
当我在互联网上运行它时(使用PHP 5.6),它给了我一个错误。
但是,当我在本地主机上测试时,它很好。 完美地工作(使用PHP 5.4.31)
这是我的代码:
function downloadExcelBrand($brand,$tglAwal,$tglAkhir)
{
$this->load->library('php_excel');
$objPHPExcel = new PHPExcel();
// print_r($objPHPExcel);die();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', "Concept");
$objPHPExcel->getActiveSheet()->SetCellValue('B1', $brand);
$objPHPExcel->getActiveSheet()->SetCellValue('A2', "Period");
$objPHPExcel->getActiveSheet()->SetCellValue('B2', $tglAwal." to ".$tglAkhir);
$objPHPExcel->getActiveSheet()->SetCellValue('A5', "Boutique");
$objPHPExcel->getActiveSheet()->SetCellValue('B5', "Q1");
$objPHPExcel->getActiveSheet()->SetCellValue('C5', "Q2");
$objPHPExcel->getActiveSheet()->SetCellValue('D5', "Q3");
$objPHPExcel->getActiveSheet()->SetCellValue('E5', "Q4");
$objPHPExcel->getActiveSheet()->SetCellValue('F5', "BBC Score");
$data = $this->surveymodel->getDataLaporanBrand($brand,$tglAwal,$tglAkhir);
// print_r($data);die();
$i = 5;
foreach ($data as $index=>$value) {
// print_r($data[$index+1]);die();
if( $index%4 == 0){
$i++;
// print_r($value["Score"]);print_r($value['TotalData']);die();
$AvgQ1 = $value["Score"] / $value['TotalData'];
// print_r($AvgQ1);die();
$AvgQ2 = $data[$index+1]["Score"]/$data[$index+1]['TotalData'];
$AVGQ3 = $data[$index+2]["Score"]/$data[$index+2]['TotalData'];
$AvgQ4 = $data[$index+3]["Score"]/$data[$index+3]['TotalData'];
$BSC = $AvgQ1+$AvgQ2+$AVGQ3+$AvgQ4;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$i, $value["boutiqueID"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$i, $AvgQ1);
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$i, $AvgQ2);
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$i, $AVGQ3);
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$i, $AvgQ4);
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$i, $BSC);
}
}
// Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Write the Excel file to filename some_excel_file.xlsx in the current directory
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="Report_By_Brand.xlsx"');
// Write file to the browser
$objWriter->save('php://output');
}
当我删除
$objWriter->save('php://output');
代码时,奇怪的事情发生了。它要求保存Excel文件,但是Excel文件无法打开,因为它已经损坏了。*编辑
错误信息为:
无法访问此网站 可能该网页http://my-link-in-here暂时无法正常运行,或者已永久移动到新网址。 ERR_INVALID_RESPONSE
*更新我尝试在
$objWriter->save('php://output');
之前加入ob_end_clean();
或ob_clean();
,虽然能成功保存 Excel 文件,但是无法打开,Excel 显示“文件格式或扩展名不正确”。我尝试将
filename
属性中的xlsx
扩展名更改为xls
,现在可以打开 Excel 文件了。但是出现了 PHP 错误Message: ob_end_clean(): failed to delete buffer. No buffer to delete
。我尝试保留扩展名但删除了
ob_end_clean();
,错误再次出现。
*解决方案:
I changed the code to be
Excel5
like this$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="userList.xls"');
And it works like champion. Anyone can make a explanation ? I will give the solution to the one who can make the explanation
无法访问此网站。可能是该网页暂时不可用或已永久移至新的网址。 ERR_INVALID_RESPONSE
- M Argus Chopin Gyver