摘要:讀取表格先引入類測試文件加載測試文件判斷文件類型實例化類型對象加載文件下面主要判斷和類型即和格式文件請確保導入的文件格式正確加載文件發生錯誤獲取當前工作表或者獲取工作表行數和列數注意有時候你會發現你的表格明明有內容的行數就
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);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29084.html
摘要:過去工作中使用較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不斷完善之,歡迎大家去上面和提交,不斷補充和優化,打造最全面的開發解決方案地址原文地址基礎小試牛刀引用文 過去工作中使用PHPExcel較多,碰到并解決了各種大大小小的問題,總結出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不...
摘要:要求,使用了名字空間編碼規范最新的語言新特性對版本的要求加強。已經放出穩定版,官方不再建議使用。保存和導入的行為分別由和負責。注意不要混淆和對象持有數據,和是對其進行序列化和反序列化的輔助類。單元隸屬于具體的表單,使用上和表單類互動最多。 轉載請注明文章出處:https://tlanyan.me/use-phpexc... PHPOffice出品的PHPExcel是PHP讀取和生成Ex...
摘要:能不能單獨設置某個單元格的值這個目前并沒有實現,現在數據的寫入都是逐行寫入的,不支持這么細的粒度,不過折中的做法是把不需要填充的單元格寫入即可如果有什么使用問題,可以在下面留言,一起探討使用方式 二者有何區別? PHPExcel 是一個處理Excel,CVS文件的開源框架,它基于微軟的OpenXML標準和PHP語言。可以使用它來讀取、寫入不同格式的電子表格,這也是PHP至今最通用的Ex...
摘要:導出成為在絕大多數情況下,導出其實就是將二維數組轉化為表格。要保存的的名字轉換為表格的二維數組設置表格填充數據設置表格并輸出導入同理,導入其實就是將的數據轉化成為二維數組,這就要求必須符合格式。 遇到問題 平時在工作中,時常會出現將數據庫表導出為Excel或者將Excel導入數據庫表的需求。這一需求早早就已經實現過了,為了方便導入導出,我將其封裝成了兩個方法,作為記錄。 代碼實現 ph...
摘要:前言是一個純類庫,它提供了一組類,允許您從不同的電子表格文件格式如和讀取和寫入。官方文檔安裝的環境要求或者更高,,組件安裝使用執行命令安裝依賴版本號執行完命令后會在目錄下發現有了目錄,代表已經下載安裝成功。 前言 PhpSpreadsheet是一個純PHP類庫,它提供了一組類,允許您從不同的電子表格文件格式(如Excel和LibreOffice Calc)讀取和寫入。 還有一種類似的...
閱讀 2906·2021-11-15 18:02
閱讀 3800·2021-10-14 09:43
閱讀 3732·2021-09-08 10:41
閱讀 2522·2019-08-30 15:53
閱讀 1803·2019-08-30 14:14
閱讀 1943·2019-08-29 16:12
閱讀 3138·2019-08-29 14:03
閱讀 1280·2019-08-29 13:46