将asp:Table转换为excel格式

我能够从asp:table生成excel文件,但是在生成excel文件的同时打开文件会发出警告。 您尝试打开的文件格式与文件扩展名指定的格式不同我已经从此链接find解决此警告的解决方法http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel -The文件-你-是-试图对开放式IS-IN-A-不同的格式,比规定的,由这文件extension.aspx

所以我已经使用ClosedXML库,但同时添加数据到Excel表它只接受数据,数据集格式,我得到的数据string格式,所以它生成空白的Excel表。 请检查我尝试过的代码。

LoadDetailsToTable(); System.IO.StringWriter sw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw); tbl_loctbl.RenderControl(hw); using (XLWorkbook wb = new XLWorkbook()) { var ws = wb.Worksheets.Add("asd"); ws.Cell(2, 1).InsertTable(sw.ToString()); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.AddHeader("content-disposition", String.Format(@"attachment;filename=newfile.xlsx")); using (MemoryStream MyMemoryStream = new MemoryStream()) { wb.SaveAs(MyMemoryStream); MyMemoryStream.WriteTo(HttpContext.Current.Response.OutputStream); MyMemoryStream.Close(); } HttpContext.Current.Response.End(); } 

这里LoadDetailsToTable ()函数将数据加载到asp表中。 tbl_loctbl是表格ID。

不幸的是,你使用的两个标记是不兼​​容的。 Excel中的HTML表格标记是支持的,但它不在OpenXML中,这是您的库期望输出的内容。

在引擎盖下,Excel需要一个有效的XML文件格式; HTML虽然松散地支持,但不是原生的xlsx格式。

有可用的库将HTML转换为互联网上的openxml,但是这可以通过迭代你的数据集,并使用OpenXML SDK实际添加单元格和行来解决