将asp:表转换为excel格式
本文关键字:excel 格式 转换 asp | 更新日期: 2023-09-27 17:49:52
我可以从asp:table生成excel文件,但在打开文件时生成excel文件后会发出警告您试图打开的文件的格式与文件扩展名指定的格式不同我从该链接找到了此警告的解决方案http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-format-than-specified-by-the-file-extension.aspx
所以我使用了ClosedXML库,但在将数据添加到excel工作表时,它只接受数据集格式的数据集,并且我得到了字符串格式的数据,所以它生成了空白的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中不支持,而OpenXML正是库所期望输出的。
在幕后,Excel期望有一个有效的XML文件格式;html虽然受到松散的支持,但并不是原生的xlsx格式。
互联网上有一些库可以将html转换为openxml,但这可以通过迭代数据集并使用openxml SDK 实际添加单元格和行来解决。