【发布时间】:2017-06-19 01:01:39
【问题描述】:
我正在使用 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();,错误又来了..
*解决方案:
-
我把代码改成
Excel5这样$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="userList.xls"');它就像冠军一样工作。任何人都可以做出解释吗?我会把解决方案交给能解释的人
【问题讨论】:
-
错误说明了什么?
-
这里是错误@Beginner
This site can’t be reached The webpage at http://the-link-in-here might be temporarily down or it may have moved permanently to a new web address. ERR_INVALID_RESPONSE -
我无法提供解释:但也许如果您查看日志文件,或者打开在文本编辑器中生成的文件以查看它是否包含任何错误消息,它可能会为您提供解释
-
生成的文件打不开?我已将扩展名更改为
xls并使用 excel 打开它。它显示 php 错误Message: ob_end_clean(): failed to delete buffer. No buffer to delete@MarkBaker -
所以删除
ob_end_clean()