Ошибка PHPExcel в CodeIgniter «Не удалось загрузить запрошенный класс: iofactory»

Я пытаюсь экспортировать файл 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» .