原文連接配接:
<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");