2011年10月5日 星期三

只進不出~使用phpExcelReader匯入xls檔案

PhpExcelReader是一個用php來讀取excel檔案的套件。

這個套件檔案小,且容易使用,堪稱無痛。

但是顧名思義,它就真的只能讀取而已。如果你要搞些匯出之類的動作,那就只能另請高明啦!

你可以在這裡收服取得phpExcelReader
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!


後記在研究這個的時候,其實我很偷懶的沒有去看example2在寫什麼。

因為example已經夠用了,所以就不太想去看第二個了。

真是劣根性……


0 comments:

張貼留言