|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1734750
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2009/1/17 6:54 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [分享]冷日的 php query mssql 2 excel 範例
- 然後,冷日經過爬文整理之後,終於自己轉出 Excel 成功了,這裡把冷日的Code借大家參考一下!
先做點說明: 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 給使用者下載,所以把自己關掉不會動也沒關係了啦!
|
|
討論串
|