婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

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

FileInfo fi = new FileInfo(excelFile);//excelFile為文件在服務(wù)器上的地址
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Clear();
contextResponse.Buffer = true;
contextResponse.Charset = "GB2312"; //設(shè)置了類型為中文防止亂碼的出現(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";//設(shè)置輸出文件類型為excel文件。

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

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

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

在Chrome下

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

image

在Firefox下

由于安裝了FlashGot插件,會(huì)先選擇應(yīng)用的下載工具:

image

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

image

 

 

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

點(diǎn)擊確定后,被下載的文件又變成了實(shí)際文件(有時(shí)會(huì)先變成.zip文件,再變?yōu)閷?shí)際文件)

image

在IE7下

image

會(huì)先彈出保存對(duì)話框,文件正常,同樣因?yàn)檠b了迅雷的緣故,點(diǎn)保存時(shí),彈出迅雷的下載對(duì)話框,和Firefox下不同,網(wǎng)址后面沒有ViewState信息。

image 

點(diǎn)確定,下載的則是頁(yè)面文件:

image

如果在迅雷的下載對(duì)話框中點(diǎn)取消,則會(huì)使用IE的下載,這里的文件又是正確的了:

image

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

之后又嘗試了分段下載的方式,其實(shí)也是無效的,因?yàn)檠咐赘静焕頃?huì)你提供給它的下載機(jī)制,而且這樣在Firefox下調(diào)用迅雷時(shí),由于分段下載的Viewstate并不包含Excel文件的完整信息,迅雷下載下的也是殘缺的文件。

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

復(fù)制代碼 代碼如下:

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

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

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

事后考慮,既然每次迅雷實(shí)際都是重新請(qǐng)求URL,那么我們就應(yīng)該給迅雷傳入一個(gè)能生成Excel文件的URL。

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

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

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

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

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;//設(shè)置每次讀取長(zhǎng)度。
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);
}

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

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁(yè)面而不是文件的問題)》,本文關(guān)鍵詞  Asp.net,生成,Excel,文件,并,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁(yè)面而不是文件的問題)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Asp.net生成Excel文件并下載(更新:解決使用迅雷下載頁(yè)面而不是文件的問題)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产午夜精品一区二区| 国产成人aaaa| 午夜精品一区二区三区电影天堂| 亚洲永久精品大片| 色噜噜狠狠色综合中国| 久久免费偷拍视频| 国产欧美精品区一区二区三区| 免费高清在线一区| 欧洲一区在线观看| 午夜私人影院久久久久| 色哟哟精品一区| 欧美va日韩va| 久久激五月天综合精品| 欧美一级免费观看| 久久国产精品色婷婷| 欧美电影在线免费观看| 久久精品国产77777蜜臀| 7799精品视频| 亚洲18女电影在线观看| 欧美一区二区在线免费播放| 亚洲国产日韩精品| 日韩精品一区二区三区四区视频 | 欧美一级二级在线观看| 亚洲国产一区在线观看| 粉嫩一区二区三区性色av| 国产精品久久久久久亚洲毛片| 国产一本一道久久香蕉| 亚洲免费观看视频| 99r国产精品| 一二三四区精品视频| 亚洲精品一线二线三线| 国产伦精品一区二区三区视频青涩| 欧美主播一区二区三区| 国产剧情一区二区| 久久精品夜色噜噜亚洲aⅴ| 在线视频欧美精品| 国产精品美女久久久久高潮| av亚洲精华国产精华精| 免费成人av在线播放| 久久嫩草精品久久久精品| 欧美在线一二三| 日韩精品一卡二卡三卡四卡无卡| 欧美一区日本一区韩国一区| 国产伦精品一区二区三区视频青涩 | 国产成人一级电影| 日本在线播放一区二区三区| 日韩欧美激情四射| 欧美日韩1234| 欧美性videosxxxxx| 美女被吸乳得到大胸91| 亚洲成人免费电影| 日韩欧美激情在线| 色综合天天做天天爱| 成人精品视频一区| 亚洲成人综合视频| www.欧美色图| 久久久久国产免费免费| 丁香网亚洲国际| 亚洲乱码中文字幕| 精品日韩在线观看| 亚洲一线二线三线视频| 久久蜜桃一区二区| 91精品福利视频| 99国产欧美另类久久久精品| 久久99久久99| 亚洲人成网站精品片在线观看| 欧美国产丝袜视频| 欧美一级免费观看| 日本道精品一区二区三区| 在线免费精品视频| 成人动漫中文字幕| 成人免费毛片片v| 捆绑调教美女网站视频一区| 亚洲男人的天堂一区二区| 亚洲少妇屁股交4| 精品福利视频一区二区三区| 国产91富婆露脸刺激对白| 国产高清成人在线| 麻豆成人av在线| 国产精品1区2区3区在线观看| 五月开心婷婷久久| 亚洲欧美国产三级| 亚洲一区二区视频在线观看| 亚洲图片激情小说| 国产麻豆成人传媒免费观看| 国产suv精品一区二区883| 免费成人小视频| 播五月开心婷婷综合| 国产福利91精品| 国产精品18久久久| 91免费看片在线观看| 99视频一区二区| 欧美日韩视频第一区| 欧美性大战久久久久久久蜜臀| 99久久精品国产一区| 欧美三区免费完整视频在线观看| 色偷偷久久一区二区三区| 91精品国产欧美一区二区| 国产亚洲短视频| 久久久噜噜噜久久中文字幕色伊伊| 91精品国产aⅴ一区二区| 国产一区二区三区在线观看精品| 美女视频一区在线观看| 美女视频黄a大片欧美| 99在线精品视频| 色素色在线综合| 在线观看欧美精品| 国产婷婷色一区二区三区在线| 欧美激情一区二区三区全黄| 视频在线观看91| 久久66热偷产精品| 国产成人免费高清| 欧美一区二区三区的| 精品成人一区二区| 亚洲国产一区二区视频| 麻豆成人av在线| 成人免费高清视频在线观看| 日韩一区二区三区三四区视频在线观看| 日韩三级精品电影久久久| 一区二区三区四区在线免费观看 | 国产欧美综合色| 亚洲美女淫视频| 高清不卡在线观看av| 91小视频在线| 国产午夜亚洲精品午夜鲁丝片 | 激情深爱一区二区| 人禽交欧美网站| 欧美日韩在线综合| 国产亚洲欧美在线| 韩国av一区二区| 在线免费不卡电影| 欧美日韩一区高清| 午夜免费欧美电影| 成人av资源在线| 国产精品高潮呻吟久久| 日本欧美在线观看| 久久精品国产精品青草| 9191精品国产综合久久久久久| 国产亚洲精品资源在线26u| 国产在线国偷精品免费看| 91免费国产在线| 在线观看亚洲a| 亚洲国产精品一区二区久久| 国产iv一区二区三区| 国产亚洲精品福利| 美女一区二区视频| 欧美一区二区三区性视频| 亚洲人成网站精品片在线观看| 无吗不卡中文字幕| 精品久久国产老人久久综合| 亚洲综合在线五月| 欧美日韩一区二区三区在线看| 国产精品污网站| 亚洲丝袜精品丝袜在线| 色婷婷综合中文久久一本| 中文av字幕一区| 91免费视频网址| 亚洲乱码国产乱码精品精98午夜 | 国产精品影视在线| 欧美一级片免费看| 亚洲va韩国va欧美va| 欧美成人精品高清在线播放 | 亚洲色图清纯唯美| 在线观看一区二区视频| 亚洲在线观看免费视频| 激情小说欧美图片| 国产精品第一页第二页第三页| 久久av资源站| 欧美日韩精品免费观看视频 | 色综合一区二区三区| 国产精品免费网站在线观看| 国内久久婷婷综合| 91精品国产91久久久久久一区二区| 久久狠狠亚洲综合| 久久久久9999亚洲精品| 91丨porny丨在线| 夜夜操天天操亚洲| 99久久婷婷国产综合精品电影| 午夜视频一区二区三区| 欧美乱妇一区二区三区不卡视频| 国产一区二区三区蝌蚪| 国产精品久久夜| 91麻豆精品国产自产在线观看一区| 日韩在线一二三区| 久久奇米777| 欧美男人的天堂一二区| 青青草原综合久久大伊人精品优势| 精品少妇一区二区三区在线播放| 久久不见久久见免费视频1| 精品国产乱码久久久久久1区2区| 91视频一区二区| 夜夜嗨av一区二区三区网页| 国产亚洲成aⅴ人片在线观看 | 本田岬高潮一区二区三区| 麻豆国产一区二区| 久久久久99精品一区| 日韩精品一区二区三区蜜臀| 韩国视频一区二区| 一区二区三区四区视频精品免费 | 色婷婷久久综合|