用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1487|回复: 2
收起左侧

[已解决] CI 框架 使用phpexcel库 出现的问题 大神来帮帮忙啊

[复制链接]
发表于 2017-3-10 09:48:49 | 显示全部楼层 |阅读模式
1.我使用的CI框架是最新版的,下载回来的PHPExcel解压好后 放到application/libraries/目录下,官网下载地址:http://phpexcel.codeplex.com/




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

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



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





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
        
        
    }



这里出现了一个问题,遇到未捕获的异常?这是什么原因导致的呢?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





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



请问大神们怎么解决这个问题啊,我要做CI框架导入excel表格数据写入数据库
发表于 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');

本版积分规则