Я использую PHPExcel для экспорта отчета.Ошибка 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 не может быть открыт, так как он поврежден ..
* EDIT
Ошибка
Этот сайт не может быть достигнуто веб-страница в http://my-link-in-here может быть временно недоступна или, возможно, переместилась на новый веб-адрес. ERR_INVALID_RESPONSE
* UPDATE
Я пытаюсь добавить
ob_end_clean();
илиob_clean();
перед тем$objWriter->save('php://output');
и сохранения Excel, но я не могу открыть его, потому что Excel говорит «Формат файла или файла Удлинитель является недействительно".Я стараюсь изменить расширение
xlsx
наxls
наfilename
свойствах, и теперь Excel можно открыть. Но это показывает ошибку PHPMessage: 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
вот ошибка @Beginner 'Этот сайт не может быть достигнут. Веб-страница по адресу http: // the-link-in-here может быть временно недоступна или, возможно, переместилась на новый веб-адрес. ERR_INVALID_RESPONSE' –
Я не могу дать объяснения: но, возможно, если вы посмотрели в своих файлах журналов или открыли файл, сгенерированный в текстовом редакторе, чтобы увидеть, содержит ли оно какие-либо сообщения об ошибках, он может предоставить вам объяснение –