[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%
 
參考資料


