灵活的自定义 - 使用C#生成word文档

时间:2012-01-14 15:29:38

标签: c#-4.0 razor ms-word t4 templating

问题 - 根据从数据库中检索的信息生成word文档。

我的解决方案 - 创建word文档模板在需要插入值的位置添加字段/标记。该模板也需要表格和图表。使用开放式办公室xml sdk附带的文档反射器反映在文档模板上并提取w:document部分并将其移植到C#。其余的逻辑只围绕找到字段/标签,替换它们等等。非常简单的方法,但不是很灵活!

挑战 - 我希望用户能够自定义模板或生成的文档输出。但如果我将模板逻辑嵌入代码中,这将无法实现。

任何其他可能性 - 我使用T4和RazorEngine环顾了Templating,但找不到使用这两种技术创建word文档的具体示例。

现在最好的方法是什么? 我非常感谢您对使用C#生成Word文档的最佳和最灵活方式的意见。

6 个答案:

答案 0 :(得分:1)

我实际上正在开展一个项目,业务用户正在使用邮件合并字段设计word模板,我们使用第三方软件包Aspose Words填充值。 http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx

该软件包括一个库,用于将数据表中的数据合并到word文档中的邮件合并字段中。

我还编写了一个自定义单词任务窗格add in,它从数据库中检索数据视图,并在拖放界面中列出模仿水晶或sql报告编写界面的字段。

虽然可能更容易使用水晶或sql报告...

答案 1 :(得分:1)

使用T4或Razor生成Office文档的内容当然是可能的,然后将其打包。 Visual Studio Test Manager的TestScribe powertool就是用T4实现的。 Sally Cavanagh在本页http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae的Q& A中有一个主题,它建议了一种查看它所使用的T4模板的方法,这可能会让你快速入门。

答案 2 :(得分:1)

Here是使用C#

播放word文档模板的示例

答案 3 :(得分:0)

您可以使用内容控制数据绑定方法。

XML Mapping Task Pane for Word 2007/2010是一种创作工具。

要创建实例文档,只需附加XML数据文件即可。

如果生成的文档将在Word中打开,那就是所需的全部内容:Word将绑定数据本身。如果您的消费应用程序不是Word,您可能希望自己解析绑定(例如,通过Open XML SDK)。

内容控制数据绑定不支持重复和条件。要想办法,请查看我的OpenDoPE convention

答案 4 :(得分:0)

看看Templater。免责声明:我是作者。

答案 5 :(得分:0)

结帐JODReportsDocmosis。它们是基于Java的,但一些模板功能和输出选项可能是理想的。您可以调用命令行界面,除非它们还可以从C#中获得更好的内容。