C# 将HTML导出到Excel而不丢失格式
我有一个生成报告的asp.net页面。不管是好是坏,整个过程都是使用嵌套表生成的。我能够将页面导出到excel,但是我丢失了所有格式(无法设置列宽等)。有办法解决这个问题吗?我愿意在html端添加任何goofy MS Office特定的标签 如果这不可行,并且任何人有任何其他想法,则要求用户需要一份报告,该报告应: a) 他们可以手动修改一些个性化/区域特定数据 b) 需要根据用户的位置隐藏/显示列 c) 需要从网站上运行 如能提供任何关于替代方法的帮助或建议,将不胜感激 谢谢C# 将HTML导出到Excel而不丢失格式,c#,asp.net,vb.net,excel,C#,Asp.net,Vb.net,Excel,我有一个生成报告的asp.net页面。不管是好是坏,整个过程都是使用嵌套表生成的。我能够将页面导出到excel,但是我丢失了所有格式(无法设置列宽等)。有办法解决这个问题吗?我愿意在html端添加任何goofy MS Office特定的标签 如果这不可行,并且任何人有任何其他想法,则要求用户需要一份报告,该报告应: a) 他们可以手动修改一些个性化/区域特定数据 b) 需要根据用户的位置隐藏/显示列 c) 需要从网站上运行 如能提供任何关于替代方法的帮助或建议,将不胜感激 谢谢 Joe不幸的是,
Joe不幸的是,如果没有第三方工具,你真的无法做到 如果已知最终用户拥有Office 2007+,则可以使用开放式XML格式 如果你选择第三方路线,它们通常相当昂贵,至少130美元 检查该服务器上的堆栈溢出线程 虽然您可以在导出之前隐藏/显示代码中的列来操作这些列,但这并不是什么大问题,只是外观的格式化将很困难。将允许您从ASP.NET生成格式化的Excel工作簿 您可以查看我们的ASP.NET实时示例并下载免费试用版
免责声明:我拥有SpreadsheetGear LLC以下代码适用于我,并保留所有表格格式。显然,源html表需要有属性runat=“Server”和一个id才能工作 本质上,它创建了一个新的(虚拟)表单,其中只包含您的表,并将其写入excel文件。如果您使用的是Excel2007,您将收到令人恼火的错误消息“您试图打开的文件的格式与扩展名指定的格式不同”,但是您可以安全地忽略此问题,如果您想打开它,可以说“是”
Public Sub exportTableExcel(ByVal aTable, ByVal filename)
Dim sw As New StringWriter()
Dim htw As New HtmlTextWriter(sw)
HttpContext.Current.Response.ClearContent()
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" & filename)
HttpContext.Current.Response.ContentType = "application/vnd.xls"
HttpContext.Current.Response.Charset = ""
' Create a form to contain the table
Dim frm As New HtmlForm()
aTable.Parent.Controls.Add(frm)
frm.Attributes("runat") = "server"
'prevent additional code from being exported
frm.attributes("maintainScrollPositionOnPostBack") = "false"
frm.Controls.Add(aTable)
frm.RenderControl(htw)
HttpContext.Current.Response.Write(sw.ToString())
HttpContext.Current.Response.End()
frm.Dispose()
htw.Dispose()
sw.Dispose()
End Sub
最后,我在一张纸上画出了我想要的东西,然后划行和划行,形成了一个解决方案(我希望我永远不必对它进行任何维护)。一旦我把它全部放到一个表中,输出是可以接受的,但不是很好。