之前的部落格文章已經對PHPExcel匯出excel檔案做了簡單的總結,現對他讀取excel做以下總結。 (資料量不會很大的建置可以採用web直接用此方法讀取,如果資料量會很大的話,還是建議web只做上傳功能,讀取、處理還是放後台吧。PHPExcel還是比較耗費時間、記憶體的。
PHPExcel讀取EXCEl文件中,如果單元格中的內容有兩種字體時,讀到的是富文本的對象:例如:單元格中有內容:“測試1”,其中前半部分的“測試」字體為宋體,後半部的「1」字體為Calibri,此時透過
$cell = $sheet->getCell($addr)->getValue();
取得單元格的值。並且列印:
//首先导入PHPExcel require_once 'PHPExcel.php'; $filePath = "test.xlsx"; //建立reader对象 $PHPReader = new PHPExcel_Reader_Excel2007(); if(!$PHPReader->canRead($filePath)){ $PHPReader = new PHPExcel_Reader_Excel5(); if(!$PHPReader->canRead($filePath)){ echo 'no Excel'; return ; } } //建立excel对象,此时你即可以通过excel对象读取文件,也可以通过它写入文件 $PHPExcel = $PHPReader->load($filePath); /**读取excel文件中的第一个工作表*/ $currentSheet = $PHPExcel->getSheet(0); /**取得最大的列号*/ $allColumn = $currentSheet->getHighestColumn(); /**取得一共有多少行*/ $allRow = $currentSheet->getHighestRow(); //循环读取每个单元格的内容。注意行从1开始,列从A开始 for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){ for($colIndex='A';$colIndex<=$allColumn;$colIndex++){ $addr = $colIndex.$rowIndex; $cell = $currentSheet->getCell($addr)->getValue(); if($cell instanceof PHPExcel_RichText) //富文本转换字符串 $cell = $cell->__toString(); echo $cell; } }
可以看到對這樣的單元格不能直接讀取單元格的文字內容。 (註:這裡的富文本是我自己的翻譯,不知對否)。
另外,讀取單元格的函數還有:
//列從0開始,行從1開始
$currentSheet ->getCellByColumnAndRow($colIndex,$rowIndex)->getCellByColumnAndRow($colIndex,$rowIndex)->geto();