工做中進行excel的時候遇到了兩個問題,php
1.excel表中列值過大,因爲沒有進行特殊處理,程序無法正常運行;git
2.列值中含有日期格式的文本,不能正確讀取;github
因此經過網絡搜索,並解決了問題,記錄一下,以備後用:網絡
解決方法:spa
/****知識點總結*****
1.列數值過大,能夠經過 PHPExcel_Cell::columnIndexFromString($column),獲取最大列的數值excel
2.針對表格中有日期的,能夠經過PHPExcel_Shared_Date::ExcelToPHP($value) 進行格式化,
如獲取一個日期值,可以下面語句進行獲取:
$date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));code
*******************/blog
<?php //PHPExcel類獲取地址 https://github.com/PHPOffice/PHPExcel //引入PHPExcel類文件 include_once './PHPExcel.php'; //讀取的excel文件 $excelFile = './test.xlsx'; /**實例化讀取excel文件類,根據excel版本進行不一樣獲取,下面是不一樣方式*/ /*** //Excel5方式 $objReader = new PHPExcel_Reader_Excel5(); $objReader = PHPExcel_IOFactory::createWriter('Excel5'); //Excel2007方式 $objReader = new PHPExcel_Reader_Excel2007(); $objReader = PHPExcel_IOFactory::createWriter('Excel2007'); ***/ //因爲個人文件是07版本,因此使用Excel2007方式 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); //載入excel文件 $objPHPExcel = $objReader->load($excelFile); //讀取excel的第一個工做表 $sheet = $objPHPExcel->getSheet(0); //取得總行數 $highestRow = $sheet->getHighestRow(); //取得總列數 $highestColumm = $sheet->getHighestColumn(); //獲取最大列值字母對應的數值 $highestColummNum = PHPExcel_Cell::columnIndexFromString($highestColumm); if (!$highestRow || !$highestColumm) { exit('表中無數據'); } //獲取表格值進行存儲 $dataExcel = array(); $i = 0; //若是列值過大,進行計算, if ($highestColummNum > 26) { //循環讀取每一個單元格的數據 for ($row = 2; $row <= $highestRow; $row++) {//行數是以第2行開始 for ($column = 'A'; PHPExcel_Cell::columnIndexFromString($column) <= $highestColummNum; $column++) {//列數是以A列開始 if ($column == 'E') {//假設第E列是日期 $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue())); } else { $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue(); } } $i++; } } else { //循環讀取每一個單元格的數據 for ($row = 2; $row <= $highestRow; $row++) {//行數是以第2行開始 for ($column = 'A';$column <= $highestColumm; $column++) {//列數是以A列開始 if ($column == 'E') {//假設第E列是日期 $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue())); } else { $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue(); } } $i++; } } if (!$dataExcel) { exit('未獲取任何數據'); } print_r($dataExcel); exit; /****知識點總結***** 1.列數值過大,能夠經過 PHPExcel_Cell::columnIndexFromString($column),獲取最大列的數值 2.針對表格中有日期的,能夠經過PHPExcel_Shared_Date::ExcelToPHP($value) 進行格式化, 如獲取一個日期值,可以下面語句進行獲取: $date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue())); *******************/ ?>