服务器端直接将HTML下载成Excel
2017-04-27 13:40
323 查看
今天,有一个功能需要,需要将网页的数据表格下载成Excel。之前没有做过这样的需求。然后在网上摆渡了一下,网上的方案有很多种
通过使用Ajax获取Html将标签变为服务器端控件,通过InnerHtml的方式获取。
还有其他方式参考
个人觉得第一中太繁琐,我只是想获取个HTML而已,干嘛还给我搞个Ajax 出来,那么我就索性使用了第二种方案。将标签加上runat=“server”,通过属性来获取里面包含的html。
代码如下:前段代码: <div class="container-fluid " runat="server" id="DivAll"> 后端代码: string dd= this.DivAll.InnerHtml;
这样貌似没有什么问题,结果一运行,大跌我眼镜!出现了煞白煞白的错误提示。
于是乎,有使用了万事都能解决的摆渡,在上面寻找答案,真希望百度,哪天能帮我摆渡一下。花费我洪荒之力,终于找到了解决方案,不过说实在的这解决方案还要研究一下,不知道为什么还有一个套一个使用!
System.Text.StringBuilder strb = new System.Text.StringBuilder(); System.IO.StringWriter sw = new System.IO.StringWriter(strb); System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw); this.DivAll.RenderControl(htw);
这样在后台代码中就可以直接使用前台的Div中的html代码啦。只需要将strb.ToString();
那么下一步就是将Html放在后台中直接下载出来。那问题又来了,下载方法不会写呀!我艹又要上摆渡,真是够够的啦!
Response.ContentType = "application/force-download"; Response.AddHeader("content-disposition", "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); Response.Write("<head>"); Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); string fileCss = Server.MapPath("../css/bootstrap.css"); string cssText = string.Empty; StreamReader sr = new StreamReader(fileCss); var line = string.Empty; while ((line = sr.ReadLine()) != null) { cssText += line; } sr.Close(); Response.Write("<style>" + cssText + "</style>"); Response.Write("<!--[if gte mso 9]><xml>"); Response.Write("<x:ExcelWorkbook>"); Response.Write("<x:ExcelWorksheets>"); Response.Write("<x:ExcelWorksheet>"); Response.Write("<x:Name>Report Data</x:Name>"); Response.Write("<x:WorksheetOptions>"); Response.Write("<x:Print>"); Response.Write("<x:ValidPrinterInfo/>"); Response.Write("</x:Print>"); Response.Write("</x:WorksheetOptions>"); Response.Write("</x:ExcelWorksheet>"); Response.Write("</x:ExcelWorksheets>"); Response.Write("</x:ExcelWorkbook>"); Response.Write("</xml>"); Response.Write("<![endif]--> "); Response.Write(html);//HTML Response.Flush(); Response.End();
听说将这段代码中的.xls换成doc可以直接下载成Word格式!
号外号外,在这段代码中还可以神奇的加入Css文件。真是够流弊的!
好啦,不写啦,直接贴上整段代码
protected void DownExcel_Click(object sender, EventArgs e)
{
try
{
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(strb);
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);
//前段div的id
this.DivAll.RenderControl(htw);
string html = strb.ToString();
htw.Close();
sw.Close();
Response.ContentType = "application/force-download"; Response.AddHeader("content-disposition", "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); Response.Write("<head>"); Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"); string fileCss = Server.MapPath("../css/bootstrap.css"); string cssText = string.Empty; StreamReader sr = new StreamReader(fileCss); var line = string.Empty; while ((line = sr.ReadLine()) != null) { cssText += line; } sr.Close(); Response.Write("<style>" + cssText + "</style>"); Response.Write("<!--[if gte mso 9]><xml>"); Response.Write("<x:ExcelWorkbook>"); Response.Write("<x:ExcelWorksheets>"); Response.Write("<x:ExcelWorksheet>"); Response.Write("<x:Name>Report Data</x:Name>"); Response.Write("<x:WorksheetOptions>"); Response.Write("<x:Print>"); Response.Write("<x:ValidPrinterInfo/>"); Response.Write("</x:Print>"); Response.Write("</x:WorksheetOptions>"); Response.Write("</x:ExcelWorksheet>"); Response.Write("</x:ExcelWorksheets>"); Response.Write("</x:ExcelWorkbook>"); Response.Write("</xml>"); Response.Write("<![endif]--> "); Response.Write(html);//HTML Response.Flush(); Response.End();
}
catch (Exception)
{
throw;
}
}
TIP:若遇到文件下载格式问题,请查看
http://blog.csdn.net/younghaiqing/article/details/70846850
相关文章推荐
- 解决tomcat中rar、excel格式文件在下载时直接以乱码打开
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- 在服务器端生成Excel文件然后从服务器下载的本地的代码
- 解决ie下载excel文件直接在浏览器打开的问题(tomcat,web项目)
- C#将服务器端excel文件下载到客户端的简单方法
- WEB页面同时实现两种打印(下载Excel,页面直接打印)
- html使用a标签不通过后台实现直接下载
- java直接输出Excel 页面实现下载
- SharePoint 文档库打开HTML 直接浏览而不是打开下载对话框
- html下载excel模板
- ASP.NET中应用Excel:(6)在服务器端生成HTML表格
- jsp利用POI直接生成Excel并在页面提示打开下载
- Struts结合数据实时生成Excel文件并直接下载
- ExtJs Excel导出并下载IIS服务器端遇到的问题
- SharePoint 文档库打开HTML 直接浏览而不是打开下载对话框
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- 解决IE不弹出下载框而直接打开Word、Excel乱码问题
- 在服务器端生成Excel文件后如何提供客户端下载 Response.Redirect()
- IE中点击链接下载EXCEL文件直接以乱码方式打开解决
- 如何在Struts的Action中直接使用POI生成Excel并下载