Я пытаюсь экспортировать файл XLS с PHPExcel 1.7.8 + CodeIgniter 2.1.3
Я выполнил все инструкции PHPExcel
но я получаю эту ошибку:
Не удалось загрузить запрошенный класс:
iofactory
и вот мой код контроллера:
//expoxt to excel all admin data function export_excel_admin() { //$data['resultsadmin'] = $this->admin_model->get_all_data_admin(); //var_dump($data['resultsadmin']); //$this->load->view('administrator/export_excel/export_excel_admin', $data); $query = $this->db->get('tbl_admin'); if(!$query) return false; // Starting the PHPExcel library $this->load->library('excel'); $this->load->library('PHPexcel/IOFactory'); $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setTitle("export")->setDescription("none"); $objPHPExcel->setActiveSheetIndex(0); // Field names in the first row $fields = $query->list_fields(); $col = 0; foreach ($fields as $field) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $field); $col++; } // Fetching the table data $row = 2; foreach($query->result() as $data) { $col = 0; foreach ($fields as $field) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $data->$field); $col++; } $row++; } $objPHPExcel->setActiveSheetIndex(0); $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5'); // Sending headers to force the user to download the file header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="Products_'.date('dMy').'.xls"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output'); }
А также я удалил часть «PHPExcel_» в файле IOFactory.php любое решение для этой проблемы?
Раньше я использовал PHPExcel с CodeIgniter.
Все, что я сделал, это удалить папку phpexcel в приложение / стороннюю группу и создать следующую библиотеку-оболочку:
<?php class Excel { private $excel; public function __construct() { // initialise the reference to the codeigniter instance require_once APPPATH.'third_party/phpexcel/PHPExcel.php'; $this->excel = new PHPExcel(); } public function load($path) { $objReader = PHPExcel_IOFactory::createReader('Excel5'); $this->excel = $objReader->load($path); } public function save($path) { // Write out as the new file $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); $objWriter->save($path); } public function stream($filename) { header('Content-type: application/ms-excel'); header("Content-Disposition: attachment; filename=\"".$filename."\""); header("Cache-control: private"); $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); $objWriter->save('php://output'); } public function __call($name, $arguments) { // make sure our child object has this method if(method_exists($this->excel, $name)) { // forward the call to our child object return call_user_func_array(array($this->excel, $name), $arguments); } return null; } } ?>
Тогда я мог бы сделать следующее в моих контроллерах:
$this->load->library("excel"); $this->excel->load("/path/to/input.xls"); $this->excel->setActiveSheetIndex(0); $this->excel->getActiveSheet()->SetCellValue('B2', "whatever"); $this->excel->save("/path/to/output.xls");
-$this->load->library("excel"); $this->excel->load("/path/to/input.xls"); $this->excel->setActiveSheetIndex(0); $this->excel->getActiveSheet()->SetCellValue('B2', "whatever"); $this->excel->save("/path/to/output.xls");
-$this->load->library("excel"); $this->excel->load("/path/to/input.xls"); $this->excel->setActiveSheetIndex(0); $this->excel->getActiveSheet()->SetCellValue('B2', "whatever"); $this->excel->save("/path/to/output.xls");
Надеюсь, что это помогает вам?
Может быть, этот комментарий был слишком поздним. Но, возможно, полезно для других.
Измените код детали ниже:
// Starting the PHPExcel library $this->load->library('excel'); $this->load->library('PHPexcel/IOFactory');
чтобы:
// Starting the PHPExcel library $this->load->library('excel'); //$this->load->library('PHPexcel/IOFactory');
Затем измените этот код части:
$objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5');
чтобы:
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
все что тебе нужно это
//afrer this you can use any of PHPExcel classes and methods $this->load->file(APPPATH.'libraries/PHPExcel.php'); //full path to $objReader = new PHPExcel_Reader_Excel2007();//change by filetype try { $objPHPExcel = $objReader->load($inputFileName); //you file name } catch (Exception $e) { show_error($e->getMessage()); }
тестирование на CI 2.1.3 && PHPExcel 1.7.8
Я следую этим инструкциям для интеграции между CodeIgniter и PHPExcel.
Создайте новый файл PHP внутри application/libraries/
CI и назовите его Excel.php.
require_once APPPATH."/third_party/PHPExcel.php"; class Excel extends PHPExcel { public function __construct(){ parent::__construct(); } }
Чтобы следовать всем инструкциям, посетите « Легко интегрировать Phpexcel Into Codeigniter Framework» .