问题 - 根据从数据库中检索的信息生成word文档。
我的解决方案 - 创建word文档模板在需要插入值的位置添加字段/标记。该模板也需要表格和图表。使用开放式办公室xml sdk附带的文档反射器反映在文档模板上并提取w:document部分并将其移植到C#。其余的逻辑只围绕找到字段/标签,替换它们等等。非常简单的方法,但不是很灵活!
挑战 - 我希望用户能够自定义模板或生成的文档输出。但如果我将模板逻辑嵌入代码中,这将无法实现。
任何其他可能性 - 我使用T4和RazorEngine环顾了Templating,但找不到使用这两种技术创建word文档的具体示例。
现在最好的方法是什么? 我非常感谢您对使用C#生成Word文档的最佳和最灵活方式的意见。
答案 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)
结帐JODReports或Docmosis。它们是基于Java的,但一些模板功能和输出选项可能是理想的。您可以调用命令行界面,除非它们还可以从C#中获得更好的内容。