您的位置:首页 > 大数据

phpExcel 读取数据,大数据文件处理方案

2017-12-27 13:15 507 查看
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;
}


excel_data 这个变量里面保存的是 获取指定的 工作表数据。

如果调用Load没有第二个参数默认是获取第一个工作表

如果要读取大文件,这种方法我不推荐。如果说你要处理的excel超过2000行左右 你就会发现他调用Load方法的时候会很缓慢(我这边开启xdebug 发现读取200k的文件,debug log生成为 356mb 可怕)。phpexcel 如果要处理的文件大于1mb的情况下 进行读取操作比较浪费系统资源。

如果有可能先转换为csv文件。然后再进行读取操作。这么搞效率最少高了5倍以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: