利用PHPExcel如何讀取表格中內容
利用PHPExcel如何讀取表格的內容呢?話不多說,以下的這篇文章將給大家詳細的介紹關於PHPExcel讀取表格中內容的方法。
先引入類別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,"请确保导入的文件格式正确!"); } $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如何讀取表格中內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

登入 CakePHP 是一項非常簡單的任務。您只需使用一項功能即可。您可以記錄任何後台程序(如 cronjob)的錯誤、異常、使用者活動、使用者採取的操作。在 CakePHP 中記錄資料很容易。提供了 log() 函數

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫
