首先就是要下載它丈牢,下載地址http://sourceforge.net/projects/phpexcelreader/下載回來直接解壓里面有一個Excel文件夾聪姿,這個目錄就是它工作的文件。其余的文件是示例文件备畦。示例文件掛上是不能直接用的恕酸,需要修改Execl目錄下的reader.php霹崎,找到第31行的:
require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;
將其修改為require_once ‘oleread.php’;
并將本目錄下的oleread.inc文件改名為oleread.php
至此修改完,再運(yùn)行下測試文件就能正常工作了,下面是自帶的example.php的內(nèi)容,還是很簡單的夯尽。入庫的方法在另外一個示例文件中也有瞧壮。
PHP-ExcelReader的用法比較簡單,下面四句代碼是必須的:
require_once 'Excel/reader.php';$data = new Spreadsheet_Excel_Reader();$data->setOutputEncoding('CP1251');$data->read('jxlrwtest.xls');
上述四句代碼執(zhí)行完后匙握,excel文件就解析完成了咆槽。解析的結(jié)果在數(shù)組$reader->sheets[0]中,包含maxrow圈纺、maxcol秦忿、numRows、numCols蛾娶、cells灯谣、cellsInfo六項,其中有用的有numRows(行數(shù))蛔琅、numCols(列數(shù))胎许、cells(單元格內(nèi)容)。要想獲取excel文件的具體數(shù)據(jù)信息揍愁,遍歷$reader->sheets[0][“cells”]數(shù)組即可呐萨。該數(shù)組是形如
$reader->sheets[0][“cells”][<行索引>][<列索引>] = <單元格中的值>
的二維數(shù)組,行索引和列索引均從1開始計數(shù)莽囤。
//完整代碼
<?php// Test CVSrequire_once 'Excel/reader.php';$data = new Spreadsheet_Excel_Reader();$data->setOutputEncoding('CP936');$data->read('aaa.xls');error_reporting(E_ALL ^ E_NOTICE);for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) { for ($j = 4; $j <= 11; $j++) { if($data->sheets[0]['cells'][$i][$j]==""){ echo $nuk="null"; } echo $data->sheets[0]['cells'][$i][$j].","; } echo "
";}?>
需要說明的是:
1. Excel/reader.php文件中已經(jīng)用require_once包含了oleread.inc文件谬擦,所以在調(diào)用的時候不需要加載oleread.inc。
2. 官方提供的excel文件jxlwtest.xls已經(jīng)損壞朽缎,無法讀取與解析惨远。
3. 原始Excel/reader.php文件的第31行(如下)會導(dǎo)致錯誤:
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
原因是Spreadsheet/Excel/Reader/OLERead.php文件不存在谜悟。其實(shí)這里所需的文件就是Excel/oleread.inc,把require_once后的文件名改成 ’oleread.inc’即可北秽。
**4. ** 原始Excel/reader.php文件的第261行會導(dǎo)致如下警告:
Deprecated: Assigning thereturn value of new by reference is deprecated
其原因是此行的 =& 符號已經(jīng)在PHP 5.3中被廢棄葡幸。根據(jù)該符號在此處的作用,直接將其改為 = 即可贺氓。
5. PHP-ExcelReader不支持Excel 2007文檔的解析蔚叨,也就是說擴(kuò)展名為xlsx的Excel文件不能使用本類庫進(jìn)行解析;它只針對擴(kuò)展名為xls的Excel文件辙培。
6. PHP-ExcelReader的設(shè)置編碼方法基于iconv命 令蔑水,setOutputEncoding方法的參數(shù)就是需要設(shè)置的字符集的名稱。要使這個方法生效需要給本地的PHP環(huán)境安裝iconv擴(kuò)展扬蕊;若本地 PHP環(huán)境沒有iconv擴(kuò)展搀别,那么PHP-ExcelReader的編碼方法默認(rèn)為Unicode。關(guān)于iconv命令可參見如下鏈接:
http://www.cnblogs.com/xuxm2007/archive/2010/11/09/1872379.html
**7. ** PHP-ExceReader在解析整數(shù)的時候可能會出現(xiàn)精度上的誤差尾抑,如58解析為57.5歇父,原因不明。能做的就是解析完后檢查下數(shù)據(jù)再愈,然后四舍五入(如果有必要的話)榜苫。
**8. ** PHP-ExcelReader對于excel文件中的空白單元格,要么直接跳過不存放到結(jié)果數(shù)組中践磅,要么保存為0或者””(空字符串)单刁。