前些天写项目的时候,客户要求用HTML表格把信息展示出来,后面还要用展示的内容要导出Excel。本来想想在后台操作的话估计是要做死了,但是经过细想,Excel能够发布成HTML,一定可以由HTML转成Excel。经过几次搜索,算是把问题完善解决了代码如下:
1 Response.ContentType = "application/force-download"; 2 Response.AddHeader("content-disposition", 3 "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"); 4 Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); 5 Response.Write("<head>"); 6 Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"); 7 8 9 #region 样式的读取 10 11 string fileCss = Server.MapPath("~/Content/CalCSS/tableCss.css"); 12 string cssText = string.Empty; 13 StreamReader sr = new StreamReader(fileCss); 14 var line = string.Empty; 15 while ((line = sr.ReadLine()) != null) 16 { 17 cssText += line; 18 } 19 sr.Close(); 20 Response.Write("<style>" + cssText + "</style>"); 21 22 #endregion 23 24 Response.Write("<!--[if gte mso 9]><xml>"); 25 Response.Write("<x:ExcelWorkbook>"); 26 Response.Write("<x:ExcelWorksheets>"); 27 Response.Write("<x:ExcelWorksheet>"); 28 Response.Write("<x:Name>Report Data</x:Name>"); 29 Response.Write("<x:WorksheetOptions>"); 30 Response.Write("<x:Print>"); 31 Response.Write("<x:ValidPrinterInfo/>"); 32 Response.Write("</x:Print>"); 33 Response.Write("</x:WorksheetOptions>"); 34 Response.Write("</x:ExcelWorksheet>"); 35 Response.Write("</x:ExcelWorksheets>"); 36 Response.Write("</x:ExcelWorkbook>"); 37 Response.Write("</xml>"); 38 Response.Write("<![endif]--> "); 39 40 Response.Write(strHtml1);//这里是前台页面的HTML 41 42 Response.Flush(); 43 Response.End();
经过测试能够完全的展示页面的样式和规格:
前台HTML:
生成后的HTML:
时间: 2024-11-02 13:12:00