phpExcel 读取数据,大数据文件处理方案
/** * 读取 Excel 文件 * @param string $filePath 要读取的路径 * @param integer $sheet 要读取的工作列表 * @return array * @author lianggc 2016-09-06 */ public function load($filePath="",$sheet=0){ $PHPReader=new PHPExcel_Reader_Excel2007; if(!$PHPReader->canRead($filePath)){ $PHPReader = new PHPExcel_Reader_Excel5(); if(!$PHPReader->canRead($filePath)){ echo "no Excel"; return ; } } $PHPExcel = $PHPReader->load($filePath); //建立excel对象 $currentSheet = $PHPExcel->getSheet($sheet); //**读取excel文件中的指定工作表*/ $allColumn = $currentSheet->getHighestColumn(); //**取得最大的列号*/ //lianggc 2016-10-08 修改 支持 Z以后的列数 $allColumn= PHPExcel_Cell::columnIndexFromString($allColumn);//**取得最大的列号*/ $allRow = $currentSheet->getHighestRow(); //**取得一共有多少行*/ $data = array(); for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){ //循环读取每个单元格的内容。注意行从1开始,列从A开始 for($column=0;$column<$allColumn;$column++){ //通过数字获取对应 列号 $colIndex = PHPExcel_Cell::stringFromColumnIndex($column); $addr = $colIndex.$rowIndex;//对应下标 $cell = $currentSheet->getCell($addr)->getValue();//获取对应值 if($cell instanceof PHPExcel_RichText){ //富文本转换字符串 $cell = $cell->__toString(); } $data[$rowIndex][$colIndex] = $cell; } } return $data; }
直接下载对应的phpExcel 的包就行了上点击跳转
下载完成 把那个Classes 这个文件夹里面的 文件跟文件夹拿出来就好了。
我这边的这个方法是直接写到PHPExcel 这个文件里面的。调用很简单。引入phpExcel 这个类传递对应的excel 文件的路径就好了
$obj = new PhpExcel; $excel_data=$obj->load($file_path);//读取数据
excel_data 这个变量里面保存的是 获取指定的 工作表数据。
如果调用Load没有第二个参数默认是获取第一个工作表
如果要读取大文件,这种方法我不推荐。如果说你要处理的excel超过2000行左右 你就会发现他调用Load方法的时候会很缓慢(我这边开启xdebug 发现读取200k的文件,debug log生成为 356mb 可怕)。phpexcel 如果要处理的文件大于1mb的情况下 进行读取操作比较浪费系统资源。
如果有可能先转换为csv文件。然后再进行读取操作。这么搞效率最少高了5倍以上
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。