thinkphp整合系列之phpexcel导入excel数据

浏览:2280 最后更新:2016-10-22 18:17 分类:示例 关键字: thinkphp phpexcel 导入 表格
之前写过 thinkphp整合系列之phpexcel生成生成excel文件 http://baijunyao.com/article/74

和 php生成csv格式的excel表格 两种生成excel的方法 http://baijunyao.com/article/81

应 简简单单 同学的评论需求;

这里熬夜加班加点写出一个phpexcel导入数据的方法;


示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

一:导入phpexcel

/ThinkPHP/Library/Vendor/PHPExcel

二:导入excel的函数/**
 * 导入excel文件
 * @param  string $file excel文件路径
 * @return array        excel文件内容数组
 */
function import_excel($file){
    // 判断文件是什么格式
    $type = pathinfo($file); 
    $type = strtolower($type["extension"]);
    $type=$type==='csv' ? $type : 'Excel5';
    ini_set('max_execution_time', '0');
    Vendor('PHPExcel.PHPExcel');
    // 判断使用哪种格式
    $objReader = PHPExcel_IOFactory::createReader($type);
    $objPHPExcel = $objReader->load($file); 
    $sheet = $objPHPExcel->getSheet(0); 
    // 取得总行数 
    $highestRow = $sheet->getHighestRow();     
    // 取得总列数      
    $highestColumn = $sheet->getHighestColumn(); 
    //循环读取excel文件,读取一条,插入一条
    $data=array();
    //从第一行开始读取数据
    for($j=1;$j<=$highestRow;$j++){
        //从A列读取数据
        for($k='A';$k<=$highestColumn;$k++){
            // 读取单元格
            $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
        } 
    }  
    return $data;
}
三:调用示例

先用之前文章生成excel的方法分别生成了xls和csv格式的表格放在了/Upload/excel/目录下;

当然正常导入的话;是需要用户上传excel文件的;

这里就略过上传的过程;直接写的是传入文件路径调用函数的了;

/Application/Home/Controller/IndexController.class.php    /**
     * 导入excel数据
     */
    public function import(){
        // 导入csv格式的数据
        $data=import_excel('./Upload/excel/simple.csv');
        p($data);
        // 导入xls格式的数据
        $data=import_excel('./Upload/excel/simple.xls');
        p($data);die;
    }
//*******************回复 李庆发-多迪网络 童鞋的分割线*******************************

2016.8.22补充:

上面的p函数是为了优化输出显示的样式:以符合人类阅读的方式打印php数组

整合到自己的项目中用var_dump代替查看即可;

2016.8.22补充:

这里将上面的import拆为两个方法;

关于phpexcel导入大文件效率的问题;

建议将xls转为csv格式的表格;

然后调用import_csv这个方法    /**
     * 导入xls格式的数据 
     * 也可以用来导入csv格式的数据
     * 但是csv建议使用 下面的import_csv 效率更高
     */
    public function import_xls(){
        $data=import_excel('./Upload/excel/simple.xls');
        p($data);
    }

    /**
     * 导入csv格式的数据
     */
    public function import_csv(){
        $data=file_get_contents('./Upload/excel/simple.csv');
        $data=explode("\r\n", $data);
        p($data);
    }
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com
评论( 相关
后面还有条评论,点击查看>>