摘要:讀取表格先引入類測試文件加載測試文件判斷文件類型實(shí)例化類型對象加載文件下面主要判斷和類型即和格式文件請確保導(dǎo)入的文件格式正確加載文件發(fā)生錯(cuò)誤獲取當(dāng)前工作表或者獲取工作表行數(shù)和列數(shù)注意有時(shí)候你會(huì)發(fā)現(xiàn)你的表格明明有內(nèi)容的行數(shù)就
PHPExcel讀取表格
先引入類IOFactory.php
require_once "../PHPExcel/IOFactory.php"; $filePath = "test.xlsx"; // 測試文件
加載測試文件
$inputFileType = PHPExcel_IOFactory::identify($filePath) 判斷文件類型
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 實(shí)例化類型對象
$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,"請確保導(dǎo)入的文件格式正確!"); } $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader->load($filePath); } catch(Exception $e) { unlink($filePath) && str_alert(-1,"加載文件發(fā)生錯(cuò)誤:”".pathinfo($filePath,PATHINFO_BASENAME)."”: ".$e->getMessage()); }獲取當(dāng)前工作表
$sheet = $objPHPExcel->getSheet(0); //或者 $sheet = $objPHPExcel->getActiveSheet();獲取工作表行數(shù)和列數(shù)
$highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn();
注意:有時(shí)候你會(huì)發(fā)現(xiàn)你的表格明明有內(nèi)容的行數(shù)就5行,但是獲取到的$highestRow卻有7,8行或者更多,這可能是因?yàn)槟阍诓僮髂愕谋砀竦臅r(shí)候不小心點(diǎn)擊了其它行數(shù),雖然沒有填寫內(nèi)容,但getHighestRow也是能夠識別出行數(shù);
想要獲取有內(nèi)容的行數(shù)應(yīng)該使用getHighestDataRow和getHighestDataColumn
源碼注釋是這樣介紹的string Highest row number that contains data,即包含數(shù)據(jù)的字符串最高行數(shù).
xlsx類型的表格單元格是通過類似xy軸坐標(biāo)來獲取的,
可通過類似
$sheet->getCell("A1")->getValue(); $sheet->getCell("B2")->getValue();
獲取相應(yīng)位置的內(nèi)容,
如果不想通過字母了來遍歷獲取,可以用數(shù)字索引方法
$sheet->getCellByColumnAndRow(0,1); $sheet->getCellByColumnAndRow(1,2);
注意坐標(biāo)中第一個(gè)參數(shù)從0開始,0代表A,1代表B...,第二個(gè)參數(shù)從1開始.
下面是遍歷表格獲取全部單元格內(nèi)容:
$dataSet=array(); for ($column = "A"; $column <= $highestColumn; $column++) {//列數(shù)是以A列開始 for ($row = 4; $row <= $highestRow; $row++) { //行數(shù)是以第4行開始 $cell = $sheet->getCell($column . $row)->getValue(); if($cell instanceof PHPExcel_RichText) { //富文本轉(zhuǎn)換字符串 $cell = $cell->__toString(); } $dataSet[$row][] = $cell; } }
其中富文本轉(zhuǎn)換字符串,是使用$cell instanceof PHPExcel_RichText判斷是否為富文本,查閱資料發(fā)現(xiàn)如果你的單元格中字符串包含兩種以上的字體會(huì)自動(dòng)被設(shè)為富文本,這時(shí)候需要__toString()轉(zhuǎn)換
判斷合并單元格是否位于最左上角當(dāng)我們循環(huán)輸出所有單元格后發(fā)現(xiàn),一些被合并的單元格只有最左上坐標(biāo)的是有內(nèi)容的,其他都是null
例如A4,A5合并成一個(gè)單元格,getCell("A4")是有正常內(nèi)容的,但是getCell("A5")是null.
isMergeRangeValueCell可以用來判斷某個(gè)具體的單元格是否為最左上角
$sheet->getCell("A" . $row)->isMergeRangeValueCell()
當(dāng)$row為4的時(shí)候是返回true,5的時(shí)候返回false
轉(zhuǎn)換時(shí)間獲取表格中時(shí)間格式的內(nèi)容,需要PHPExcel_Shared_Date::ExcelToPHP()來轉(zhuǎn)換為php可識別的時(shí)間格式
date("Y-m-d",PHPExcel_Shared_Date::ExcelToPHP($sometime);
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29084.html
摘要:過去工作中使用較多,碰到并解決了各種大大小小的問題,總結(jié)出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不斷完善之,歡迎大家去上面和提交,不斷補(bǔ)充和優(yōu)化,打造最全面的開發(fā)解決方案地址原文地址基礎(chǔ)小試牛刀引用文 過去工作中使用PHPExcel較多,碰到并解決了各種大大小小的問題,總結(jié)出這樣一篇文章,一方面記錄自己踩過的坑,一方面與大家分享,讓大家少走彎路,并不...
摘要:要求,使用了名字空間編碼規(guī)范最新的語言新特性對版本的要求加強(qiáng)。已經(jīng)放出穩(wěn)定版,官方不再建議使用。保存和導(dǎo)入的行為分別由和負(fù)責(zé)。注意不要混淆和對象持有數(shù)據(jù),和是對其進(jìn)行序列化和反序列化的輔助類。單元隸屬于具體的表單,使用上和表單類互動(dòng)最多。 轉(zhuǎn)載請注明文章出處:https://tlanyan.me/use-phpexc... PHPOffice出品的PHPExcel是PHP讀取和生成Ex...
摘要:能不能單獨(dú)設(shè)置某個(gè)單元格的值這個(gè)目前并沒有實(shí)現(xiàn),現(xiàn)在數(shù)據(jù)的寫入都是逐行寫入的,不支持這么細(xì)的粒度,不過折中的做法是把不需要填充的單元格寫入即可如果有什么使用問題,可以在下面留言,一起探討使用方式 二者有何區(qū)別? PHPExcel 是一個(gè)處理Excel,CVS文件的開源框架,它基于微軟的OpenXML標(biāo)準(zhǔn)和PHP語言??梢允褂盟鼇碜x取、寫入不同格式的電子表格,這也是PHP至今最通用的Ex...
摘要:導(dǎo)出成為在絕大多數(shù)情況下,導(dǎo)出其實(shí)就是將二維數(shù)組轉(zhuǎn)化為表格。要保存的的名字轉(zhuǎn)換為表格的二維數(shù)組設(shè)置表格填充數(shù)據(jù)設(shè)置表格并輸出導(dǎo)入同理,導(dǎo)入其實(shí)就是將的數(shù)據(jù)轉(zhuǎn)化成為二維數(shù)組,這就要求必須符合格式。 遇到問題 平時(shí)在工作中,時(shí)常會(huì)出現(xiàn)將數(shù)據(jù)庫表導(dǎo)出為Excel或者將Excel導(dǎo)入數(shù)據(jù)庫表的需求。這一需求早早就已經(jīng)實(shí)現(xiàn)過了,為了方便導(dǎo)入導(dǎo)出,我將其封裝成了兩個(gè)方法,作為記錄。 代碼實(shí)現(xiàn) ph...
摘要:前言是一個(gè)純類庫,它提供了一組類,允許您從不同的電子表格文件格式如和讀取和寫入。官方文檔安裝的環(huán)境要求或者更高,,組件安裝使用執(zhí)行命令安裝依賴版本號執(zhí)行完命令后會(huì)在目錄下發(fā)現(xiàn)有了目錄,代表已經(jīng)下載安裝成功。 前言 PhpSpreadsheet是一個(gè)純PHP類庫,它提供了一組類,允許您從不同的電子表格文件格式(如Excel和LibreOffice Calc)讀取和寫入。 還有一種類似的...
閱讀 2918·2021-11-15 18:02
閱讀 3813·2021-10-14 09:43
閱讀 3752·2021-09-08 10:41
閱讀 2528·2019-08-30 15:53
閱讀 1812·2019-08-30 14:14
閱讀 1957·2019-08-29 16:12
閱讀 3153·2019-08-29 14:03
閱讀 1286·2019-08-29 13:46