[ASP.Net] 設定Gridview匯出Excel格式
在網頁上針對Gridview的資料欄位做匯出Excel檔案時,
通常會使用Response的方式輸出,並指定Header為 "application/ms-excel"
(可參考擴展 GridView 控制項 - 支援 Excel 及 Word 匯出)
但最近在匯出檔案時,卻遇到一個特殊的狀況,
因為使用者要求所有的資料顯示必須是民國年,格式如下
98年6月12日
但開啟匯出之後的Excel檔案,
卻發現會自動被Excel轉換成
1998年6月12日
可以發現是因為Excel自動幫我們將字串轉換為日期的格式了,
所以如果我們不希望Excel將字串自動做判斷的話,
我們就必須針對該欄位設定格式,來告訴Excel
上網查了一下資料,發現我們只需要在CSS加上欄位格式就可以了
如果原本的Template欄位長的像這樣
<asp:TemplateField HeaderText="日期">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "DateTime")%>
</ItemTemplate>
</asp:TemplateField>
我們只需要設定欄位的CSS中設定字串的格式,如下
<asp:TemplateField HeaderText="日期">
<ItemTemplate>
<span style="vnd.ms-excel.numberformat: @">
<%# DataBinder.Eval(Container.DataItem, "DateTime")%>
</span>
</ItemTemplate>
</asp:TemplateField>
所匯出的Excel檔案就可以正確的顯示了
98年6月12日
附上一些常用的格式
- 文本:vnd.ms-excel.numberformat:@
- 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
- 數字:vnd.ms-excel.numberformat:#,##0.00
- 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
- 百分比:vnd.ms-excel.numberformat: #0.00%
參考資料