【问题标题】:What is best solution to generate Word document from ASP.NET? [closed]从 ASP.NET 生成 Word 文档的最佳解决方案是什么? [关闭]
【发布时间】:2017-12-06 00:18:53
【问题描述】:

我想从我的 ASP.NET 应用程序中生成一个 word 文档。目前,我们显示一个“议程列表”,其中包含议程信息和所有项目/主题。这个页面需要有word打开的能力。议程页面不是静态的,它是从 SQL Server 中提取的议程项目的动态列表。

关于最佳解决方案的任何建议?我正在寻找一个快速的解决方案,而 OpenXML 似乎有点太耗时了。我愿意购买第三方工具。

谢谢!

【问题讨论】:

    标签: asp.net xml visual-studio-2010 ms-word report


    【解决方案1】:

    使用 Office OpenXML SDK。对于更高版本的 Office(2007 及更高版本),这是标准。还有其他答案中提到的其他方法,但 OpenXML 将为您提供对输出的最大程度的控制。

    以下是一些帮助您入门的文档: http://msdn.microsoft.com/en-us/office/bb265236.aspx

    【讨论】:

    • 谢谢!!我现在正在看这个!非常感谢您的帮助!如果这看起来很耗时,我的替代方案可能是 Aspose。
    【解决方案2】:

    你可以

    1. 让页面自己生成文档(类似RTF格式)

    2. 将 Word 模板另存为 XML,并在填写内容的位置添加您自己的占位符(我知道您说过这很耗时,如果您对模板进行大量更新,这是真的)

    3. 使用了像 Aspose (http://www.aspose.com) 这样的第三方工具,它对我来说效果很好,因为它确实节省了大量时间来通过 C# 中的对象处理文档。

    【讨论】:

      【解决方案3】:

      我之前用过三种方法:

      1. 使用 openXML 库以编程方式从头开始创建文档。
      2. 使用 Office 自动化通过 Word 模板邮寄合并数据。您将首先创建模板,然后使用 DataSet 填充数据字段。
      3. 如果您的数据库是 SQL Server 2005 或更高版本,您可以使用 SSRS 生成多种格式的文档,包括 Word、PDF、Excel 和 CSV。

      【讨论】:

        【解决方案4】:

        您不需要任何第三方控件来创建 Word 文档。从 2007 年起,Word 可以将 html 作为 word 文档读取。您只需使用“.doc”扩展名保存任何网页,Word 就会对其进行排序。

        只需使用您想要的任何格式创建您的网页,然后使用 .doc 扩展名保存它。

        我使用 HttpWebRequest 将 Url(带有参数)调用到我的页面,然后使用 WebResponseStream 将我的页面放入缓冲区,然后使用 StreamReaderStreamWriter 将其保存到实际文档。然后我有了自己的自定义函数来下载文件。

        如果有人想要我的代码,请告诉我

        【讨论】:

        • “如果有人希望我的代码让我知道”,请在答案本身中添加任何相关代码。差不多四年后,有人在寻找代码,但没有有效的方法获得它。 (This user 在 C# 聊天室找你)
        【解决方案5】:

        您也可以试试我们的第 3 方 GemBox.Document 库。

        这是一个示例 C# 代码,如何以编程方式生成模板 Word (DOCX) 文档并使用 mail merge 将数据导入其中:

        var document = new DocumentModel();
        
        document.Sections.Add(
            new Section(document,
                new Paragraph(document, "Agenda List:"),
                new Paragraph(document,
                    new Field(document, FieldType.MergeField, "RangeStart:Agendas"),
                    new Field(document, FieldType.MergeField, "Subject") { CharacterFormat = { Bold = true } },
                    new SpecialCharacter(document, SpecialCharacterType.LineBreak),
                    new SpecialCharacter(document, SpecialCharacterType.Tab),
                    new Field(document, FieldType.MergeField, "Description")),
                new Paragraph(document,
                    new Field(document, FieldType.MergeField, "RangeEnd:Agendas"))));
        
        var agendas = new object[]
        {
            new { Subject = "First agenda subject", Description = "First agenda description." },
            new { Subject = "Second agenda subject", Description = "Second agenda description." }
        };
        
        document.MailMerge.Execute(agendas, "Agendas");
        
        document.Save("Agendas.docx");
        

        您还可以轻松save Word document to ASP.NET 响应流。

        【讨论】:

          【解决方案6】:

          我可以建议您尝试使用我们的Elerium Word .Net Writer 组件从 ASP.NET 页面生成 Word 文档。有一个带有源代码的演示,展示了如何使用动态数据表创建新的 Word 文档:

          http://eleriumsoft.com/Word_NET/WordWriter/Demo.aspx

          免责声明:我是 Elerium Software 的开发人员。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-14
            • 1970-01-01
            • 1970-01-01
            • 2020-03-31
            • 1970-01-01
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            相关资源
            最近更新 更多