PHPExcel读取excel03/07版到数组
想总结下PHPExcel的读取excel到数组的function,用的时候直接调取,懒……
参考了以下链接:
http://www.jb51.net/article/29071.htm
http://www.cnblogs.com/mingaixin/p/4746454.html
感谢二位大神!
直接上代码吧:
<?php /** * User: Klaus * Date: 2016/4/8 15:46 */ //声明编码,防止中文乱码 header("Content-type: text/html; charset=utf-8"); //引入PHPExcel require "PHPExcel_1.8.0_doc/Classes/PHPExcel.php"; echo '07版:',PHP_EOL; var_dump(excel2arr('TEST.xlsx'));//07版 echo '03版:',PHP_EOL; var_dump(excel2arr('TEST.xls'));//03版 function excel2arr($filePath){ // Check prerequisites if (!file_exists($filePath)) { exit("not found $filePath.\n"); } //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取 $reader = new PHPExcel_Reader_Excel2007(); if(!$reader->canRead($filePath)){ $reader = new PHPExcel_Reader_Excel5(); if(!$reader->canRead($filePath)){ return 'no Excel'; } } $PHPExcel = $reader->load($filePath); // 载入excel文件 $sheet = $PHPExcel->getSheet(0); // 读取第一個工作表 $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumm = $sheet->getHighestColumn(); // 取得总列数 $highestColumm= PHPExcel_Cell::columnIndexFromString($highestColumm); //字母列转换为数字列 如:AA变为27 /** 循环读取每个单元格的数据 */ for ($row = 1; $row <= $highestRow; $row++){//行数是以第1行开始 for ($column = 0; $column < $highestColumm; $column++) {//列数是以第0列开始 $columnName = PHPExcel_Cell::stringFromColumnIndex($column); // echo $sheet->getCellByColumnAndRow($column, $row)->getValue()." "; $excelarr[$row][] = $sheet->getCellByColumnAndRow($column, $row)->getValue(); } } return $excelarr; } ?>
结果如下:
增加:
将列的数字序号转成字母使用,代码如下: 复制代码 代码如下: PHPExcel_Cell::stringFromColumnIndex($i); // 从o开始 将列的字母转成数字序号使用,代码如下: 复制代码 代码如下: PHPExcel_Cell::columnIndexFromString('AA');