代码之家  ›  专栏  ›  技术社区  ›  Joe

将HTML导出到Excel而不丢失格式

  •  2
  • Joe  · 技术社区  · 16 年前

    我有一个生成报告的asp.net页面。不管是好是坏,整个过程都是使用嵌套表生成的。我可以将页面导出到excel,但是我丢失了所有格式(无法设置列宽等)。有办法处理吗?我愿意在html端添加任何goofy MS Office特定的标签。

    如果这是不可行的,如果有人有任何其他想法,则要求用户需要一份报告:

    a) 他们可以手动修改一些个性化/区域特定的数据

    如能提供任何关于替代方法的帮助或建议,将不胜感激。

    谢谢 乔

    3 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    不幸的是,没有第三方工具你真的做不到。

    如果已知最终用户有Office2007+,则可以使用OpenXML格式。

    Microsoft Open XML

    How can I read MS Office files in a server without installing MS Office and without using Interop Library?

    虽然您可以在导出之前隐藏/显示代码中的列来操纵这些列,但这不是什么大问题,只是外观的格式化将很困难。

        2
  •  0
  •   Joe Erickson    16 年前

    SpreadsheetGear for .NET 将允许您从ASP.NET生成格式化的Excel工作簿。

    here 下载免费试用版 here .

    免责声明:我拥有SpreadsheetGear LLC

        3
  •  0
  •   neil    16 年前

    本质上,它创建了一个新的(虚拟)表单,其中只包含您的表,并将其写入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
    
    推荐文章