灵活定制-使用C#生成word文档

发布于 2024-12-26 14:13:47 字数 392 浏览 0 评论 0原文

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

我的解决方案- 创建一个Word文档模板,在需要插入值的地方添加字段/标签。该模板还需要表格和图表。使用 open office xml sdk 附带的文档反射器反射文档模板并提取 w:document 部分并将其移植到 C#。其余的逻辑只是围绕查找字段/标签、替换它们等。非常简单的方法,但不是很灵活!

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

任何其他可能性 - 我查看了使用 T4 和 RazorEngine 的模板,但找不到如何使用这两种技术创建 Word 文档的任何具体示例。

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

Problem - Generate a word document from information retrieved from database.

My solution - Create a word document template add fields/tags in places where values need to be inserted. The template will require tables and charts as well. Using document reflector that comes with open office xml sdk reflect on the document template and extract the w:document section and port it to C#. The rest of the logic revolves simply around finding the fields/tags, replacing them, etc. Very simple approach but not very flexible!

Challenge - I want the user to have the ability to customize the template or the generated document output. But this will not be possible if I embed the template logic in code.

Any other possibilities - I looked around at Templating using T4 and RazorEngine but could not find any concrete examples of how to create word documents using these two technologies.

Now what is the best approach?
I would really appreciate your inputs on what is the best and most flexible way to generate word documents using C#.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

赏烟花じ飞满天 2025-01-02 14:13:47

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

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

我还编写了一个自定义的 Word 任务窗格添加,用于从数据库检索数据视图,并在模仿 Crystal 或 SQL 报告编写界面的拖放界面中列出字段。

不过,使用 crystal 或 sql 报告可能会更容易......

I'm actually working a project where the business users are designing word template with mail merge fields and we are populating the values using a 3rd party software package Aspose Words. http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx

The software includes a library for merging data from datatables into the mail merge fields in the word document.

I also wrote a customized word task pane add in that retrieves data views from the database and lists the fields in a drag/drop interface that mimics a crystal or sql report writing interface.

Probably would of been easier to just use crystal or sql reporting though...

微暖i 2025-01-02 14:13:47

当然可以使用 T4 或 Razor 生成 Office 文档的内容,然后将其打包。 Visual Studio 测试管理器的 TestScribe 强大工具正是通过 T4 实现的。此页面的问答中有一个 Sally Cavanagh 的帖子 http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae 建议了一种查看其使用的 T4 模板的方法,这可能会让您跳转-开始了。

It's certainly possible to generate the contents of an Office doc using T4 or Razor and then package it up. The TestScribe powertool for Visual Studio Test Manager does just that with T4. There is a thread by Sally Cavanagh in the Q&A on this page http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae that suggests a way to look at the T4 templates that it uses, which might get you jump-started.

娜些时光,永不杰束 2025-01-02 14:13:47

这里是用C#播放word文档模板的示例

Here is sample to play word document template with C#

失退 2025-01-02 14:13:47

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

Word 2007/2010 的 XML 映射任务窗格 是一种创作工具。

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

如果生成的文档将在 Word 中打开,则只需执行以下操作:Word 将绑定数据本身。如果您使用的应用程序不是 Word,您可能需要自己解析绑定(例如通过 Open XML SDK)。

内容控制数据绑定并不旨在支持重复和条件。有关实现此目的的方法,请查看我的 OpenDoPE 约定

You could use a content control databinding approach.

XML Mapping Task Pane for Word 2007/2010 is an authoring tool.

To create an instance document, you just attach your XML data file.

If the resulting documents will be opened in Word, that is all that is required: Word will bind the data itself. If your consuming application is not Word, you might want to resolve the bindings yourself (eg via Open XML SDK).

Content control databinding isn't intended to support repeats and conditionals. For a way to do that, look at my OpenDoPE convention

起风了 2025-01-02 14:13:47

看一下模板。免责声明:我是作者。

Take a look at Templater. Disclamer: I'm the author.

[旋木] 2025-01-02 14:13:47

查看 JODReports

Check out JODReports or Docmosis. They are Java based but some of the templating features and output options might be ideal. You can call the command line interfaces unless they also have something better to reach from C#.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文