PhpExcelReader是一個用php來讀取excel檔案的套件。
這個套件檔案小,且容易使用,堪稱無痛。
但是顧名思義,它就真的只能讀取而已。如果你要搞些匯出之類的動作,那就只能另請高明啦!
你可以在這裡收服取得phpExcelReader
phpExcelReader:Click
進去連結之後,點選綠色的download即可。
(唉,想我第一次進這個網站的時候還不知道要怎麼下載(掩面)。。故特此說明,以造褔後人。)
下載完成後解壓,你不必匯入解壓後的所有檔案,我們真正會用到的就只有Excel資料夾裡頭的東西。
對,沒錯,就只有那兩個檔案,剩下的不是教學文件就是記錄文件,匯入也是佔空間。
更甚者,你可以把oleread.inc裡頭的東西貼到reader.php裡頭去,這樣就只剩一個檔案啦,給有精神潔癖的人做參考。
接下來就是程式碼的部份了。
其實在example中有詳盡的介紹,基本上是照抄就可以使用了。
我做的是把excel檔案匯入到Mysql的資料庫中,結合之前的檔案上傳,範例如下:
這是個非常簡單的範例,一次只能匯入一張表。
它做的事就是讀取上傳的檔案並把它存至資料庫。
如果要取用的話,記得把sql語法中的資料表名稱改掉。
另外,陣列$tmp是視你資料表欄位而改變,有n個欄位$tmp陣列就到n
Hope you like it!
這個套件檔案小,且容易使用,堪稱無痛。
但是顧名思義,它就真的只能讀取而已。如果你要搞些匯出之類的動作,那就只能另請高明啦!
你可以在這裡
phpExcelReader:Click
進去連結之後,點選綠色的download即可。
(唉,想我第一次進這個網站的時候還不知道要怎麼下載(掩面)。。故特此說明,以造褔後人。)
下載完成後解壓,你不必匯入解壓後的所有檔案,我們真正會用到的就只有Excel資料夾裡頭的東西。
對,沒錯,就只有那兩個檔案,剩下的不是教學文件就是記錄文件
更甚者,你可以把oleread.inc裡頭的東西貼到reader.php裡頭去,這樣就只剩一個檔案啦
接下來就是程式碼的部份了。
其實在example中有詳盡的介紹,基本上是照抄就可以使用了。
我做的是把excel檔案匯入到Mysql的資料庫中,結合之前的檔案上傳,範例如下:
<?php
require_once('phpExcelReader/reader.php');
if($_POST){
$uploadExcel = $_FILES['file']['tmp_name'];
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('UTF-8');
$data->read($uploadExcel);
$readData =array();
//讀取檔案中的每一格,並把它存至陣列
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) {
$readData[$i][$j] = $data->sheets[0]['cells'][$i][$j];
}
}
sava_data($readData);
}
function sava_data($readData){
$count =0;
foreach( $readData as $key => $tmp){
/*-----開始匯入資料-----*/
if( $key==1 ){
$sql_ex = "INSERT INTO `your_table_name`($tmp[1],$tmp[2],$tmp[3],$tmp[4]) "; //資料庫的table欄位要記得更改.
continue;
}else
$sql = $sql_ex . " VALUES('$tmp[1]','$tmp[2]','$tmp[3]','$tmp[4]')";
$result = mysql_query($sql) or die("無法送出" . mysql_error( ));
$count ;
}
echo "<script>alert('共加入".$count."筆資料');</script>";
}
?>
<form enctype="multipart/form-data" method="POST" action="">
<label>選擇Excel資料表</label>
<input name="file" type="file" id="file" size="50" />
<input type="submit" value="匯入資料"/>
這是個非常簡單的範例,一次只能匯入一張表。
它做的事就是讀取上傳的檔案並把它存至資料庫。
如果要取用的話,記得把sql語法中的資料表名稱改掉。
另外,陣列$tmp是視你資料表欄位而改變,有n個欄位$tmp陣列就到n
Hope you like it!

0 comments:
張貼留言