魔夜听剑 发表于 2017-3-10 09:48:49

CI 框架 使用phpexcel库 出现的问题 大神来帮帮忙啊

1.我使用的CI框架是最新版的,下载回来的PHPExcel解压好后 放到application/libraries/目录下,官网下载地址:http://phpexcel.codeplex.com/

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/090742gbonmno3otoc2fjo.png


2.在Controller控制器里面引用类库

      $this->load->helper(array('form', 'url'));
      $this->load->library(array('form_validation','PHPExcel','PHPExcel/IOFactory'));

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/092235hwkzk4sp5k737kwq.png

3.迎合CI 需要把phpexcel/IOFactory.php 的类名改为IOFactory ,构造函数改成public

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/091431p36jsjrac0xaaqb8.png

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/091943pxxobpx1xxtxx5xo.png

4.写代码导入excel表格

    /*
    *导入excel表格
    */
    public function ex_import(){
      
      $config['upload_path']      = './uploads/';
      $config['allowed_types']    = 'xls|xlsx|xl';
      $config['max_size']   = 300000;
      $config ['file_name'] = date ( 'Ymdhis', time () );
      $this->load->library('upload', $config);
      
      if(!$this->upload->do_upload()) {
            echo $this->upload->display_errors();
      }
      else{
            $data = array ('upload_data' => $this->upload->data () );//文件的一些信息
            $file_name = $data ['upload_data'] ['file_name'];//取得文件名
      }
      
      $uploadfile='./uploads/'.$file_name;//获取上传成功的Excel
      $objReader =IOFactory::createReader('Excel5');//use excel2007 for 2007 format
      //$objReader =$this->iofactory->createReader('Excel5');
      $objPHPExcel = $objReader->load($uploadfile);//加载目标Exce
      echo '2222';exit;
      $sheet = $objPHPExcel->getSheet(0);//读取第一个sheet
      $highestRow = $sheet->getHighestRow(); // 取得总行数
      print_r($highestRow);exit;
      $highestColumn = $sheet->getHighestColumn(); // 取得总列数
      $succ_result=$error_result=0;//设置导入成功和失败的总数为0
      
      
    }

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/092709ja0bxa22mqheq2yn.png

这里出现了一个问题,遇到未捕获的异常?这是什么原因导致的呢?excel文件也已经上传到uploads目录下

An uncaught Exception was encounteredType: PHPExcel_Reader_Exception
Message: The filename ./uploads/20170310093254.xlsx is not recognised as an OLE file
Filename: D:\phpStudy\WWW\cixuexi\application\libraries\PHPExcel\Shared\OLERead.php
Line Number: 90

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/093055z4s6zcoetf224qaf.png

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/093940c2b48qufz4c1487t.png

上传的excel的表格内容是这样的:

http://codeigniter.org.cn/forums/data/attachment/album/201703/10/094356mq6yy6fztmyiwcmw.png

请问大神们怎么解决这个问题啊,我要做CI框架导入excel表格数据写入数据库

Hex 发表于 2017-3-10 10:45:29

看起来你的 PHPExcel 加载是没问题的,我看错误信息是说你的 .xlsx 文件有问题,Excel 能打开不代表 PHPExcel 一定能打开,换一个文件试试?

魔夜听剑 发表于 2017-3-10 11:23:42

本帖最后由 魔夜听剑 于 2017-3-10 11:24 编辑

找到了:
把:$objReader =IOFactory::createReader('Excel5');//use excel2007 for 2007 format
改为:$objReader = IOFactory::createReader('Excel2007');
页: [1]
查看完整版本: CI 框架 使用phpexcel库 出现的问题 大神来帮帮忙啊