#php #mysql #excel #codeigniter #phpexcel
Вопрос:
я пытаюсь экспортировать данные из моей таблицы в файл excel с помощью библиотеки php excel, мой контроллер выглядит следующим образом:
public function exportexcel() {
$this->load->model("excel_import_model");
$var = $this->excel_import_model->excelexport();
$this->load->library('excel');
$object = new PHPExcel();
$object->setActiveSheetIndex(0);
$table_columns = array("Name", "Address", "Gender", "Designation", "Age");
$column = 0;
foreach($table_columns as $field) {
$object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
$column ;
}
$employee_data = $this->excel_import_model->excelexport();
$excel_row = 2;
foreach($employee_data as $row) {
$object->getActiveSheet()->setCellValueByColumnAndRow(0, $excel_row, $row->sendername);
$object->getActiveSheet()->setCellValueByColumnAndRow(1, $excel_row, $row->sendercity);
$object->getActiveSheet()->setCellValueByColumnAndRow(2, $excel_row, $row->senderphone);
$object->getActiveSheet()->setCellValueByColumnAndRow(3, $excel_row, $row->awb);
$object->getActiveSheet()->setCellValueByColumnAndRow(4, $excel_row, $row->sendermobile);
$excel_row ;
}
date_default_timezone_set("Asia/Jakarta");
$this_date = date("Y-m-d");
$filename='pb_turnamen_data-'.$this_date.'.xls'; //save our workbook as this file name
header('Content-Type: application/vnd.ms-excel; charset=UTF-8'); //mime type
header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
header('Cache-Control: max-age=0'); //no cache
$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
ob_end_clean();
$objWriter->save('php://output');
}
и моя модель выглядит так, как показано ниже.:
function excelexport()
{
$this->db->order_by("id", "DESC");
$query = $this->db->get("consignments");
return $query->result();
}
при нажатии на кнопку файл excel загружается, но файл отображается, как показано на рисунке ниже:
может кто-нибудь, пожалуйста, сказать мне, что здесь не так, заранее спасибо
Комментарии:
1. Я не вижу
continue
abreak
или aswitch
в этом коде. Пожалуйста, проверьте имя файла и номер строки в ошибке, чтобы убедиться, что вы показываете нам правильный код2. @RiggsFolly я думаю, что это происходит из папки библиотеки excel
3. Проверьте свою версию PHP и попробуйте
composer update
4. @Canh на локальном хосте версия php 5.2
5. PHPExcel устарел, возможно, вам придется обновить электронную таблицу PHP. phpspreadsheet.readthedocs.io/en/latest это решило бы проблему
Ответ №1:
Вы можете использовать следующий код, и он будет загружен в формате .xlsx
$file_name = time().".xlsx";
$object_writer = PHPExcel_IOFactory::createWriter($object, 'Excel2007');
ob_end_clean();
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename='.$file_name);
$object_writer->save('php://output');