校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁面而不是文件的問題)

Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁面而不是文件的問題)

熱門標簽:云南外呼電銷機器人系統(tǒng) 海外地圖標注門市標 浙江外呼系統(tǒng)怎么安裝 山西防封卡電銷卡套餐 廈門商鋪地圖標注 陜西人工外呼系統(tǒng)哪家好 銅川小型外呼系統(tǒng)運營商 上海楊浦怎么申請申請400電話 地圖標注多個行程
這里采用的是在服務端先生成Excel文件,然后利用文件地址下載的方法。

生成Excel文件的方法,見:【原】.Net創(chuàng)建Excel文件(插入數(shù)據(jù)、修改格式、生成圖表)的方法

先試用Response.WriteFile的方法:
復制代碼 代碼如下:

FileInfo fi = new FileInfo(excelFile);//excelFile為文件在服務器上的地址
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Clear();
contextResponse.Buffer = true;
contextResponse.Charset = "GB2312"; //設置了類型為中文防止亂碼的出現(xiàn)
contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", excelName)); //定義輸出文件和文件名
contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
contextResponse.ContentEncoding = Encoding.Default;
contextResponse.ContentType = "application/ms-excel";//設置輸出文件類型為excel文件。

contextResponse.WriteFile(fi.FullName);
contextResponse.Flush();
contextResponse.End();

其中第一行的excelFile為Excel文件在服務器上的地址,比如:“C:\Website\Excel\xx.xlsx”。

這種方法也是網(wǎng)上一般提供的方法,但在實際操作中,卻出現(xiàn)了意向不到的問題:

在Chrome下

一切正常,Excel文件直接下載到Chrome的默認下載文件夾中。

image

在Firefox下

由于安裝了FlashGot插件,會先選擇應用的下載工具:

image

在這里顯示是正常的,如果選擇“保存文件”,Excel文件也會被保存到默認文件夾中,但如果試用第三方下載工具,比如迅雷,會出現(xiàn)如下窗口:

image

 

 

注意到網(wǎng)址一欄,會在頁面實際地址后添加ViewState信息,而另存名稱也不是Excel文件本身的名稱,而是頁面的名稱。

點擊確定后,被下載的文件又變成了實際文件(有時會先變成.zip文件,再變?yōu)閷嶋H文件)

image

在IE7下

image

會先彈出保存對話框,文件正常,同樣因為裝了迅雷的緣故,點保存時,彈出迅雷的下載對話框,和Firefox下不同,網(wǎng)址后面沒有ViewState信息。

image 

點確定,下載的則是頁面文件:

image

如果在迅雷的下載對話框中點取消,則會使用IE的下載,這里的文件又是正確的了:

image

懷疑迅雷是根據(jù)下載對話框中的網(wǎng)址重新請求下載,與發(fā)起請求的頁面已經(jīng)無關,而IE又不會把ViewState信息傳到迅雷中,導致下載的文件不是想要的Excel頁面。

之后又嘗試了分段下載的方式,其實也是無效的,因為迅雷根本不理會你提供給它的下載機制,而且這樣在Firefox下調(diào)用迅雷時,由于分段下載的Viewstate并不包含Excel文件的完整信息,迅雷下載下的也是殘缺的文件。

最后只能采用最老土的解決方法:Response.Redirect(),轉(zhuǎn)向?qū)嶋H文件地址。

復制代碼 代碼如下:

FileInfo fi = new FileInfo(excelFile);
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Redirect(string.Format("~/Template/{0}", excelName), false);

這樣在三個瀏覽器下測試都正常了,因為請求的是實際文件的地址,在迅雷中顯示的也是實際文件的地址。下載就不會出現(xiàn)問題。但這樣相當于告知客戶端用戶文件的實際地址,隱私性不佳。但好在這里并不需要太好的隱私性,而且文件會在一定時間之后刪除,所以倒并不是太大的問題了。

上面是第一次考慮的結果,似乎還是有些懶了……

事后考慮,既然每次迅雷實際都是重新請求URL,那么我們就應該給迅雷傳入一個能生成Excel文件的URL。

即,在點擊“生成Excel”按鈕的時候,轉(zhuǎn)向另一個Export頁面,在這個頁面的Page_Load方法中完成生成Excel文件、下載Excel文件的步驟。
復制代碼 代碼如下:

String fileName = Request.QueryString["FileName"];
String exportName = Request.QueryString["Export"];
if(fileName != null)
{
ExportManger.CreateExcel(fileName);//先在服務器端創(chuàng)建Excel文件。
Response.Redirect(String.Format("{0}?Export={1}",Request.Path.ToString(),fileName));//重定向到本頁面,但Query參數(shù)變?yōu)镋xport。
}
else if(exportName != null)
{
ExportManger.ExportExcel(exportName);//下載Excel文件。
}

這里頁面跳轉(zhuǎn)了兩次,第一次是生成Excel,第二次是下載Excel。

之所以跳轉(zhuǎn)兩次,是因為迅雷會捕獲最后的URL,如果生成和下載放在一起進行,那么迅雷下載時會重復再生成一遍Excel文件。下載Excel文件的代碼ExportManger.ExportExcel(exportName)就使用了本文開頭介紹的Response.Write方法,也可以用分段下載的方法:
復制代碼 代碼如下:

if(fi.Length > 0)
{
FileStream sr = new FileStream(fi.FullName,System.IO.FileMode.Open,System.IO.FileAccess.Read, System.IO.FileShare.Read);
int size = 1024;//設置每次讀取長度。
for (int i = 0; i fi.Length / size + 1; i++)
{
byte[] buffer = new byte[size];
int length = sr.Read(buffer, 0, size);
contextResponse.OutputStream.Write(buffer, 0, length);
}
sr.Close();
}
else
{
contextResponse.WriteFile(fi.FullName);
}

這里的結果是只生成了一次Excel并在服務器保留,以后每次下載的時候都使用帶"Export"的參數(shù)下載相同的文件。那么如果需要文件只是一次性的,每次下載都需要重新生成,則只需要把Export頁面的下載和生成放到一起。然后把開頭的Response.Write方法最后變成:
復制代碼 代碼如下:

contextResponse.Flush();
fi.Delete();
contextResponse.End();

即每次響應清空后把文件先刪除,再結束響應。這樣就解決了利用下載工具出現(xiàn)的下載不能的問題,同時保護了服務器文件地址的隱私,并可以采用分段寫入的方法寫入大文件,而且可以按需要即時刪除生成的文件而不占用服務器空間。

您可能感興趣的文章:
  • ASP.NET MVC3關于生成純靜態(tài)后如何不再走路由直接訪問靜態(tài)頁面
  • 使用ASP.NET模板生成HTML靜態(tài)頁面的五種方案
  • ASP.NET動態(tài)生成靜態(tài)頁面的實例代碼
  • ASP.NET 生成靜態(tài)頁面 實現(xiàn)思路
  • Asp.NET 生成靜態(tài)頁面并分頁的代碼
  • Asp.Net生成靜態(tài)頁面的實現(xiàn)方法
  • ASP.NET MVC生成靜態(tài)頁面的方法
  • asp.net生成Excel并導出下載五種實現(xiàn)方法
  • asp.net(C#) 生成隨機驗證碼的代碼
  • ASP.net(c#)生成條形碼 code39條碼生成方法
  • asp.net C#生成和解析二維碼的實例代碼
  • ASP.NET編程簡單實現(xiàn)生成靜態(tài)頁面的方法【附demo源碼下載】

標簽:萊蕪 朔州 孝感 信陽 許昌 西雙版納 自貢 常州

巨人網(wǎng)絡通訊聲明:本文標題《Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁面而不是文件的問題)》,本文關鍵詞  Asp.net,生成,Excel,文件,并,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁面而不是文件的問題)》相關的同類信息!
  • 本頁收集關于Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁面而不是文件的問題)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美日韩综合在线| 国产在线精品不卡| 欧美日韩在线播| 亚洲bt欧美bt精品| 欧美肥胖老妇做爰| 国产一区二区电影| 国产精品久久久久久久岛一牛影视 | 精品国产91亚洲一区二区三区婷婷| 亚洲欧美乱综合| 欧美日韩综合不卡| 麻豆成人久久精品二区三区小说| 精品久久国产老人久久综合| 国产综合久久久久久鬼色 | 最新欧美精品一区二区三区| 欧洲在线/亚洲| 美女网站色91| 中文字幕不卡的av| 欧美私人免费视频| 久久99精品久久久久久久久久久久| 日韩美一区二区三区| 国产成人免费av在线| 亚洲免费观看高清完整版在线观看 | 国产一区二区精品久久91| 欧美精彩视频一区二区三区| 在线亚洲人成电影网站色www| 亚洲综合激情网| 欧美精品一区二区三区视频| 成人开心网精品视频| 午夜激情久久久| 久久蜜臀精品av| 91成人国产精品| 国产一区二区久久| 日韩中文字幕区一区有砖一区| 精品久久免费看| 欧美亚洲一区二区三区四区| 激情五月婷婷综合网| 亚洲欧美国产三级| 亚洲精品一区二区在线观看| 在线视频一区二区免费| 国模冰冰炮一区二区| 婷婷开心久久网| 亚洲色图清纯唯美| 国产亚洲视频系列| 欧美一级片在线| 欧美影院精品一区| 成人免费看视频| 国产一区二区精品在线观看| 日韩精品视频网站| 亚洲一级在线观看| 亚洲色图色小说| 中文字幕精品一区二区三区精品| 日韩一区二区在线看| 欧美日韩精品一区二区天天拍小说 | 麻豆高清免费国产一区| 国产精品不卡在线| 国产喷白浆一区二区三区| 日韩视频在线观看一区二区| 在线免费观看日本欧美| 不卡的av在线| 成人app软件下载大全免费| 国模一区二区三区白浆| 蜜臀av一区二区| 视频一区二区不卡| 亚洲高清视频在线| 亚洲综合色区另类av| 亚洲欧美日韩国产综合| 亚洲丝袜精品丝袜在线| 亚洲欧洲一区二区在线播放| 国产女人18水真多18精品一级做| 久久无码av三级| 久久久久久久网| 国产偷国产偷精品高清尤物 | 午夜日韩在线电影| 亚洲国产精品久久久久秋霞影院| 亚洲日韩欧美一区二区在线| 国产三级三级三级精品8ⅰ区| 欧美精品一区二区三区一线天视频| 日韩欧美另类在线| 亚洲精品一区二区三区蜜桃下载| 日韩欧美亚洲国产精品字幕久久久 | 日韩精品电影在线| 日本中文字幕不卡| 国产乱对白刺激视频不卡| 国产在线视视频有精品| 丁香天五香天堂综合| 狠狠狠色丁香婷婷综合久久五月| 中文字幕成人av| 亚洲男人天堂av| 最新国产精品久久精品| 国产精品美女久久久久久久网站| 一区二区在线看| 一区二区三区四区乱视频| 国产成人亚洲精品狼色在线| 欧美午夜在线一二页| 欧美日韩久久不卡| av一区二区三区四区| 白白色 亚洲乱淫| 色天使久久综合网天天| 欧美乱妇23p| 欧美精品一区二区三区蜜桃| 国产亚洲成aⅴ人片在线观看| 中文字幕欧美三区| 亚洲成国产人片在线观看| 全国精品久久少妇| 成人免费观看视频| 欧美久久一二区| 久久久久久9999| 亚洲精品乱码久久久久久黑人| 日精品一区二区| 粉嫩av一区二区三区粉嫩| 91视频观看免费| 欧美一级二级三级蜜桃| 国产亚洲欧美在线| 亚洲国产一区视频| 国产99久久久精品| 777a∨成人精品桃花网| 国产精品卡一卡二| 蜜桃av噜噜一区| 91网站视频在线观看| 日韩情涩欧美日韩视频| 亚洲日本在线视频观看| 美女被吸乳得到大胸91| 91视频.com| 久久精品男人的天堂| 视频一区中文字幕国产| 成人app在线| www激情久久| 亚洲mv大片欧洲mv大片精品| 成人激情开心网| 精品99一区二区三区| 五月婷婷色综合| 91极品视觉盛宴| 国产精品区一区二区三区| 久久91精品国产91久久小草| 色哟哟一区二区| 中文字幕av不卡| 国产一区二区视频在线播放| 欧美精品在线视频| 亚洲欧洲精品一区二区精品久久久| 奇米一区二区三区| 欧美性生活久久| 亚洲精品成人天堂一二三| 国产超碰在线一区| 日韩精品一区二区三区蜜臀| 亚洲成人福利片| 欧美在线视频你懂得| 亚洲视频免费观看| 不卡av在线网| 中文av字幕一区| 国产+成+人+亚洲欧洲自线| 日韩欧美的一区| 麻豆视频一区二区| 91精品在线一区二区| 亚洲成人动漫在线免费观看| 色综合激情久久| 亚洲卡通动漫在线| 99精品久久只有精品| 中文在线免费一区三区高中清不卡| 国内欧美视频一区二区| 精品日韩一区二区三区| 久久精品av麻豆的观看方式| 91麻豆精品国产91久久久| 亚洲成a人片综合在线| 欧美做爰猛烈大尺度电影无法无天| 亚洲欧美电影院| 欧美系列在线观看| 婷婷开心激情综合| 91精品视频网| 久久电影网电视剧免费观看| 日韩欧美亚洲国产精品字幕久久久| 日韩国产欧美在线观看| 91精品国产综合久久福利| 日本va欧美va瓶| 欧美变态口味重另类| 激情小说欧美图片| 国产精品视频第一区| 成人av网站免费| 亚洲一区在线观看网站| 欧美日精品一区视频| 蜜臀av亚洲一区中文字幕| 精品国产乱码久久久久久图片 | 成人av网站大全| 一区二区在线免费观看| 7777精品伊人久久久大香线蕉的 | 在线观看日韩毛片| 亚洲成人av资源| 精品国产乱码久久久久久影片| 国产白丝精品91爽爽久久| 国产精品麻豆久久久| 欧美羞羞免费网站| 久久国产福利国产秒拍| 国产精品毛片a∨一区二区三区| 91国产成人在线| 老司机精品视频一区二区三区| 国产三级欧美三级日产三级99| 色哟哟一区二区三区| 久久99热99| 专区另类欧美日韩| 7777女厕盗摄久久久| 国产成人精品影视|