天天看點

Datagrid資料導出到excel檔案的三種方法

原文連接配接:

<a href="http://www.cnblogs.com/xieduo/articles/606202.html">http://www.cnblogs.com/xieduo/articles/606202.html</a>

方法一:導出到csv檔案,存放在伺服器端任一路徑,然後給客戶下載下傳 

優點: 

1、可以進行身份認證後給客戶下載下傳,如果放到非web目錄就沒有對應的url,客戶無法随時下載下傳。 

2、也是因為生成了檔案,是以占用了伺服器的空間,但是可以把檔案名存放到資料庫,再次給客戶下載下傳的時候不需要重複生成檔案。 

3、csv檔案是文本檔案,逗号隔開字段,回車隔開行,易于資料導入導出。 

實作方法: 

方法二:導出到csv檔案,不存放到伺服器,直接給浏覽器輸出檔案流

1、随時生成,不需要占用資源 

2、可以結合身份認證 

3、同樣利于資料交換 

對方法一,二補充一點,如果你希望導出的是xls檔案分隔符用\t就可以了,不要用逗号

代碼修改如下: 

sw.WriteLine("自動編号\t姓名\t年齡"); 

   foreach(DataRow dr in dt.Rows) 

   { 

    sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]); 

   } 

另外,修改輸出的檔案擴充名為xls即可。 

1、有固定的格式,樣子好看(datagrid的樣子) 

局限性: 

1、不适合資料交換,裡面有html代碼,比較亂,沒有固定格式 

2、datagrid不能有分頁、排序等,否則出錯 

在這裡說明一點:有的網友反映代碼出現“沒有dr["id"]”之類的錯誤,這個代碼是按照我的資料結構來寫的,到時候相關的字段要換成你自己的才是。

還有就是如果檔案名需要中文的話,這麼修改Response.AddHeader("Content-Disposition", "attachment; filename="+System.Web.HttpUtility.UrlEncode("中文",System.Text.Encoding.UTF8)+".xls");