先引入類IOFactory.php
require_once ../PHPExcel/IOFactory.php $filePath = test.xlsx // 測試文件
加載測試文件
$inputFileType = PHPExcel_IOFactory::identify($filePath) 判斷文件類型
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 實例化類型對象
$objPHPExcel = $objReader- load($filePath); 加載文件
下面主要判斷Excel2007和Excel5類型,即xlsx/xlsm/xltx/xltm和xls/xlt格式文件
try { $inputFileType = PHPExcel_IOFactory::identify($filePath); if ($inputFileType !== Excel5 $inputFileType !== Excel2007 ) { unlink($filePath) str_alert(-1, 請確保導入的html' target='_blank'>文件格式正確! $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader- load($filePath);} catch(Exception $e) { unlink($filePath) str_alert(-1, 加載文件發生錯誤:” .pathinfo($filePath,PATHINFO_BASENAME). ”: .$e- getMessage()); }獲取當前工作表
$sheet = $objPHPExcel- getSheet(0);$sheet = $objPHPExcel- getActiveSheet();獲取工作表行數和列數
$highestRow = $sheet- getHighestRow();$highestColumn = $sheet- getHighestColumn();
注意:有時候你會發現你的表格明明有內容的行數就5行,但是獲取到的$highestRow卻有7,8行或者更多,這可能是因為你在操作你的表格的時候不小心點擊了其它行數,雖然沒有填寫內容,但getHighestRow也是能夠識別出行數;
想要獲取有內容的行數應該使用getHighestDataRow和getHighestDataColumn
源碼注釋是這樣介紹的string Highest row number that contains data,即包含數據的字符串最高行數.
xlsx類型的表格單元格是通過類似xy軸坐標來獲取的,
可通過類似
$sheet- getCell( A1 )- getValue(); $sheet- getCell( B2 )- getValue();
獲取相應位置的內容,
如果不想通過字母了來遍歷獲取,可以用數字索引方法
$sheet- getCellByColumnAndRow(0,1); $sheet- getCellByColumnAndRow(1,2);
注意坐標中第一個參數從0開始,0代表A,1代表B...,第二個參數從1開始.
下面是遍歷表格獲取全部單元格內容:
$dataSet=array();for ($column = A $column = $highestColumn; $column++) {//列數是以A列開始 for ($row = 4; $row = $highestRow; $row++) { //行數是以第4行開始 $cell = $sheet- getCell($column . $row)- getValue(); if($cell instanceof PHPExcel_RichText) { //富文本轉換字符串 $cell = $cell- __toString(); $dataSet[$row][] = $cell;}
其中富文本轉換字符串,是使用$cell instanceof PHPExcel_RichText判斷是否為富文本,查閱資料發現如果你的單元格中字符串包含兩種以上的字體會自動被設為富文本,這時候需要__toString()轉換
判斷合并單元格是否位于最左上角當我們循環輸出所有單元格后發現,一些被合并的單元格只有最左上坐標的是有內容的,其他都是null
例如A4,A5合并成一個單元格,getCell( A4 )是有正常內容的,但是getCell( A5 )是null.
isMergeRangeValueCell可以用來判斷某個具體的單元格是否為最左上角
$sheet- getCell( A . $row)- isMergeRangeValueCell()
當$row為4的時候是返回true,5的時候返回false
轉換時間獲取表格中時間格式的內容,需要PHPExcel_Shared_Date::ExcelToPHP()來轉換為php可識別的時間格式
date( Y-m-d ,PHPExcel_Shared_Date::ExcelToPHP($sometime);
相關推薦:
phpexcel讀取excel表格時間的例子
PHPExcel正確讀取excel表格時間單元格
以上就是利用PHPExcel如何讀取表格中內容的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答