5

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

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

谢谢!

4

6 回答 6

5

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

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

于 2013-04-13T18:31:48.837 回答
4

你可以

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

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

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

于 2013-04-13T18:31:25.887 回答
2

我以前使用过三种方法:

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

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

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

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

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

于 2015-07-24T08:36:44.210 回答
1

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

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

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");

您还可以轻松地将 Word 文档保存到 ASP.NET响应流。

于 2013-04-15T08:47:14.547 回答
0

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

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

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

于 2013-06-28T07:45:15.557 回答