對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2009/1/17 6:54:05
然後,冷日經過爬文整理之後,終於自己轉出 Excel 成功了,這裡把冷日的Code借大家參考一下!
先做點說明:
1.Web 端是 LAMP 系統,只是這次沒有採用 MySql
2.所以冷日是拿 php 連結 MsSql
先來做資料連線的設定:
然後是輸出 Excel 最重要得 Header 部份:
然後去把資料庫撈出來:
設定第一行的表頭:
把資料開始塞到 Excel 的所有欄位:
嘗試把自己關掉:
最後那個嘗試把自己關掉的功能經測試後無效,不過呢,冷日本來要的功能,就是在某個網頁上做一個 link ,當使用者點擊此 link 時,會即時的去資料庫查詢出資料並製作成 Excel 給使用者下載,所以把自己關掉不會動也沒關係了啦!
先做點說明:
1.Web 端是 LAMP 系統,只是這次沒有採用 MySql
2.所以冷日是拿 php 連結 MsSql
先來做資料連線的設定:
<?php
// define database parameter
$dbHost = "192.168.OOO.XXX"; //資料庫IP
$dbUsername = "OOXX"; //資料庫連線帳號
$dbPassword = "OOXXOOXXOOXX"; //資料庫連線密碼
$dbDbName = "OOXX"; //資料庫名稱
$dbTablename = "OOOXXX"; //資料表名稱
// connection to the database
$Connect = mssql_connect($dbHost, $dbUsername, $dbPassword)
or die("Couldn't connect to SQL Server on $dbHost");
// select a database to work with
$selected = mssql_select_db($dbDbName, $Connect)
or die("Couldn't open database $dbDbName");
?>
然後是輸出 Excel 最重要得 Header 部份:
<?php
// set header infomation
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=$dbTablename.$file_ending");
header("Content-Transfer-Encoding: binary ");
header("Pragma: no-cache");
header("Expires: 0");
?>
然後去把資料庫撈出來:
<?php
// export data to excel
$sql = 'SELECT * FROM ' . $dbTablename . ' WHERE (type IS NOT NULL) ORDER BY sn ;';
//$ALT_Db = @mysql_select_db($dbDbName, $Connect) or die("Couldn't select database");
//$result = @mysql_query($sql,$Connect) or die(mysql_error());
$result = @mssql_query($sql,$Connect) or die(mysql_error());
?>
設定第一行的表頭:
<?php
$sep = "\t";
$title2Write = array('產品編號' , '產品序號' , '產品類別' , '產品名稱' , '產品單位' , '產品單價' , '最低訂量' );
for ( $i = 0 ; $i < 7 ; $i++ ) {
echo iconv( "UTF-8" , "big5" , $title2Write[$i] ) . "\t";
}
print("\n");
?>
把資料開始塞到 Excel 的所有欄位:
<?php
$i = 0;
while($row = mssql_fetch_row($result)) {
$schema_insert = "";
for( $j = 0 ; $j < mssql_num_fields($result) ; $j++ ) {
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
$i++;
}?>
嘗試把自己關掉:
<script language="javascript">
window.opener=null;
window.open("","_self");
window.close();
</script>
最後那個嘗試把自己關掉的功能經測試後無效,不過呢,冷日本來要的功能,就是在某個網頁上做一個 link ,當使用者點擊此 link 時,會即時的去資料庫查詢出資料並製作成 Excel 給使用者下載,所以把自己關掉不會動也沒關係了啦!