English 中文(简体)
导出 HTML 到 Excel 而不失去格式
原标题:Exporting HTML to Excel Without Losing Formatting

我有一个生成报告的asp.net页面。好的或不好的是,整个页面都是使用嵌套表格生成的。我能导出这个页面到Excel,但是我失去了所有的格式(无法设置列宽等)。有办法处理这个问题吗?我可以在html一侧添加任何幼稚的MS Office特定标记。

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

他们可以手动添加个性化/区域特定数据进行修整。

根据用户位置需要隐藏/显示列。

c) 需要在网站上运行。

任何帮助或建议备选方法的推荐都将不胜感激。

Thanks Joe

最佳回答

不幸的是,你实际上没有第三方工具。

如果最终用户已知使用Office 2007或更高版本,则可以使用Open XML格式。

微软开放式XML

如果您选择第三方途径,通常会非常昂贵,至少需要130美元。

请查看该 Stack Overflow 线程。

如何在服务器上读取 MS Office 文件,而不安装 MS Office 并且不使用 Interop Library?

虽然您可以在导出之前在您的代码中隐藏/显示列以操纵列,但这并不是一个大问题,只是外观和感觉的格式会变得困难。

问题回答

SpreadsheetGear for .NET 将使您能够从ASP.NET生成格式化的Excel工作簿。

您可以在此处查看我们的实时ASP.NET示例,链接,也可以在此处下载免费试用版,链接

声明:我拥有SpreadsheetGear LLC。

以下代码对我来说有效,并保留所有表格格式。 源HTML表需要具有runat ="Server"属性和id才能正常工作。

基本上,它创建一个新的(虚拟)表单,其中仅包含您的表,并将其写入Excel文件中。 如果您使用Excel 2007,则会出现让人烦恼的错误消息“您正在尝试打开的文件与扩展名指定的格式不同”,但您可以安全地忽略它,并说“是”,您想打开它。

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




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签