之前幫客戶開發一個小項目,需要實現的一個功能就是,上傳一個軟件導出的Excel文件到服務端上,然後再讀取Excel裡面的內容並且寫入到數據庫。
GOOGLE了半天找了了傳說中的phpExcelReader – 一個可以用PHP讀取Excel中的數據到數組中的類。
不過作者發布的時候有幾處小問題,修改並且簡單漢化了一下,扔到博客上來,以備不時之需。
使用的時候最好把reader.php中頭部的require_once寫成真實路徑。
// 測試文檔
require_once 'Excel/reader.php';
// Excel文件($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// 設置輸入編碼 UTF-8/GB2312/CP936等等
$data->setOutputEncoding('UTF-8');
/***
* 如果服務器不支持 iconv 添加下面的代碼使用 mb_convert_encoding 編碼
* $data->setUTFEncoder('mb');
*
**/
/***
* 默認情況下行和列的技術從1開始
* 如果要修改起始數值,添加:
* $data->setRowColOffset(0);
*
**/
/***
* 設置工作模式
* $data->setDefaultFormat('%.2f');
* setDefaultFormat - 最大兼容模式
*
* $data->setColumnFormat(4, '%.3f');
* setColumnFormat - 列的格式設置(僅適用於數字字段)
*
**/
$data->read('jxlrwtest.xls');
/*
$data->sheets[0]['numRows'] - 行數
$data->sheets[0]['numCols'] - 列數
$data->sheets[0]['cells'][$i][$j] - 行$i 列$j裡的數據
$data->sheets[0]['cellsInfo'][$i][$j] - 文件的拓展信息
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
當type為unknown時使用raw值,因為元素中包含'0.00'的格式。
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = 未被格式化的值
$data->sheets[0]['cellsInfo'][$i][$j]['colspan']
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
*/
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";
}
//print_r($data);
//print_r($data->formatRecords);