1 /**
2 * 读取excel
3 * @param $filename
4 * @param int $sheet
5 * @return array
6 */
7 function readExcel($filename,$sheet=0)
8 {
9 //导入PHPExcel
10 vendor("PHPExcel.PHPExcel");
11 //$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
12 //$cacheSettings = array('memoryCacheSize'=>'100MB');
13 //\PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
14 $filePath = $filename;
15 $data = array();
16 if (strpos($filename, '.csv')) {
17 $objReader = \PHPExcel_IOFactory::createReader('CSV')
18 ->setDelimiter(',')
19 ->setInputEncoding('gb2312') //不设置将导致中文列内容返回boolean(false)或乱码
20 ->setEnclosure('"');
21 $PHPExcel = $objReader->load($filename);
22 } else {
23 $PHPExcel = \PHPExcel_IOFactory::load($filename);
24 }
25
26 if ($sheet) {
27 $currentSheet = $PHPExcel->getSheet($sheet);
28 } else {
29 $currentSheet = $PHPExcel->getActiveSheet();//当前工作表
30 }
31
32 $columns = $currentSheet->getHighestColumn(); // 总列数
33 $columns++;
34 $rows = $currentSheet->getHighestRow(); // 总行数
35
36 //\PHPExcel_Cell::columnIndexFromString($highestColumn); //字母列转换为数字列 如:AA变为26
37 //$cell = $currentSheet->getCellByColumnAndRow(数字列, 数字行)->getValue();
38 //$columnName = \PHPExcel_Cell::stringFromColumnIndex(27);
39 $data = array();
40 //循环读取每个单元格的内容。注意行从1开始,列从A开始
41 for($row=1;$row<=$rows;$row++){
42 for($column='A';$column!=$columns;$column++){
43 //$cell = \PHPExcel_Shared_Date::ExcelToPHP($currentSheet->getCell($column.$row)->getValue())-8*3600;//把中国时间当做格林威治时间来转时间戳,所以+8时区
44 $cell = $currentSheet->getCell($column.$row)->getValue();
45 if($cell instanceof \PHPExcel_RichText) {//富文本转换字符串
46 $cell = $cell->__toString();
47 }
48 $data[$row][]=$cell;
49 if($column == $columns) {
50 break;
51 }
52 }
53 }
54 return $data;
55 }