因為工作需要,必須將excel的資料輸出到mysql的資料庫,本來以為很簡單的一件事,卻弄了一整天,已經近半年沒更新的部落格,不得已再記錄一下將excel的資料轉到mysql的心得。
首先先找到一個工具,叫做 phpExcelReader ,直接跑下載回來的壓縮檔中的 example.php。
不過要注意:
Excel\reader.php 中的下面這行要修改
將 require_once 'Spreadsheet/Excel/Reader/OLERead.php';
改為 require_once 'oleread.inc';
再將example.php 中
修改 $data->setOutputEncoding('CP1251');
為 $data->setOutputEncoding('CP950');
否則中文會有問題。
修改 $data->read('jxlrwtest.xls');
為自己的 excel 檔名。
再視情況修改下面這段:
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";
}
我把它改成下列:
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];
if($j < $data->sheets[0]['numCols'])
echo "\",";
else
echo "\"";
}
echo "<br>";
第一段紅字功能:原來的程式每一列最後會多一個逗號,這會讓phpMyAdmin認為多一個欄位,而無法正常轉excel檔到mysql。這一段會拿掉最後的逗號。
第二段紅字( echo "<br>";):會讓每一列自動跳行。
上面的結果會直接顯示在瀏覽器上,必須複製到文字檔,再用phpMyAdmin的工具,載到mysql中(phpMyAdmin使用方法請自行搜尋參考)。
不過以上的工具,手動的部分還很多,例如必須在mysql建立一個對應到excel的table,能不能自動在mysql建立一個表,自動將excel轉進去呢,下次有時間想來自己寫一個看看。
參考
以 PHP 讀取 Excel 檔案的資料
http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568133.html
http://wefong.idv.tw/xkellydz/viewthread.php?tid=576