一
這種方法是把 DataSet的DataTable裡面的數據拼接成html的<table></table>形式輸出
缺點
(
)這是一種偽Excel格式
用Excel打開的時候會提示
格式與文件擴展名格式不一致
每次都要手動確定打開
煩
(
)這樣一個一個的循環
效率低
優點
直接從浏覽器輸出
用戶可以選擇保存路徑
View Code
public string GetExportString(DataSet ds)
{
StringBuilder data = new StringBuilder()
//因為循環很多
用 StringBuilder速度會快很多
//data = ds
DataSetName +
\n
;
foreach (DataTable tb in ds
Tables)//多個表
{
//data += tb
TableName +
\n
;
data
Append(
<table cellspacing=\
\
cellpadding=\
\
rules=\
all\
border=\
\
>
)
//寫出列名
data
Append(
<tr style=\
font
weight: bold; white
space: nowrap;\
>
)
foreach (DataColumn column in tb
Columns)
{
data
Append(
<td>
)
data
Append(column
ColumnName)
data
Append(
</td>
)
}
data
Append(
</tr>
)
//寫出數據
foreach (DataRow row in tb
Rows)
{
data
Append(
<tr>
)
foreach (DataColumn column in tb
Columns)
{
//if (column
ColumnName
Equals(
證件編號
) || column
ColumnName
Equals(
報名編號
))
// data
Append(
<td style=\
vnd
ms
excel
numberformat:@\
>
+ row[column]
ToString() +
</td>
)
//else
data
Append(
<td>
)
data
Append(row[column]
ToString())
data
Append(
</td>
)
}
data
Append(
</tr>
)
}
data
Append(
</table>
)
}
return data
ToString()
}
public void ExportDsToXls(Page page
string fileName
DataSet ds)
{
page
Response
Clear()
page
Response
Buffer = true;
page
Response
Charset =
GB
;
//page
Response
Charset =
UTF
;<BR> //如果輸出中文名亂碼的話
可以這樣編碼 文件名 HttpUtility
UrlEncode(fileName
System
Text
Encoding
UTF
)
page
Response
AppendHeader(
Content
Disposition
attachment;filename=
+ fileName + System
DateTime
Now
ToString(
_yyMMdd_hhmm
) +
xls
)
page
Response
ContentEncoding = System
Text
Encoding
GetEncoding(
GB
)
//設置輸出流為簡體中文
page
Response
ContentType =
application/ms
excel
;//設置輸出文件類型為excel文件
page
EnableViewState = false;
page
Response
Write(GetExportString(ds))
page
Response
End()
}
// 可以去除自動科學計數法的困擾
//輸出為Table
能夠最大限度的減少字段中數據對生成的文件格式的影響
在這裡我沒有處理數據中含有HTML標簽的情況 在頁面後台中
這樣使用就可以了
二
用到 Microsoft
Office
Interop
Excel dll
在服務器輸出
輸出的Excel在服務器
(如果是b/s架構的話還要想著怎麼把這個導出的文件拿回來)
而且如果出現異常或者中斷的話
在服務器上面有很多excel的進程需要手動去關閉
要不過不了多久
服務器就掛掉了
所以這個方法比較適合用在WinForm的開發
不適合用在web的
From:http://tw.wingwit.com/Article/program/ASP/201311/21685.html