PHPExcel所遇到问题的知识点总结
生活随笔
收集整理的這篇文章主要介紹了
PHPExcel所遇到问题的知识点总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
工作中進行excel的時候遇到了兩個問題,
1.excel表中列值過大,由于沒有進行特殊處理,程序沒法正常運行;
2.列值中含有日期格式的文本,不能正確讀取;
所以通過網絡搜索,并解決了問題,記錄一下,以備后用:
?
解決方法:
/****知識點總結*****
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()));
*******************/
?
<?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()));*******************/ ?>?
轉載于:https://www.cnblogs.com/joshua317/p/6852570.html
總結
以上是生活随笔為你收集整理的PHPExcel所遇到问题的知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态改变APP图标
- 下一篇: cocos2d-x 3.0 常见问题及解