以编程方式从 C# 到 Office Word 的复杂报告

Complex reports from C# programatically into office Word

首先我想向编程社区打个招呼,我正在寻找一种从我的 Windows 表单应用程序生成报告的方法,最好是在 word 中,该报告基本上是一个列表在我正在创建的旅游创建软件中预先配置的天数。

我到处搜索,似乎找不到有关如何开始创建报告的信息,我已将所有信息保存到数据库中,我只需要能够将这些信息输入到 word 中并按照它的顺序进行排序应该订购。

我只是想指出正确的方向,以便我可以进一步研究它。

我想要创建的确切内容是一个 word 文件,我希望我可以在这里分享它,这样您就可以真正明白我的意思。

感谢您的关注和帮助。

我可以为您指明正确的方向。 Word 文档以称为 OpenXml 的格式存储,无需实际直接使用 Word 即可创建和操作。这很好,因为您不想处理实际启动 Word 实例并使其自动化 (Interop) 的代码。它有点工作,但我不建议处理它。

OpenXml 也不好玩,但更好。您可以使用 Word 创建文档 "normally",保存它,然后让您的应用程序将其用作模板,打开一个副本,填充一些数据,然后保存它。

这里的 reference for OpenXml with Word. I'm not saying it's pretty. It's not. The documentation is lacking. This page 添加文本没有从上一页链接,尽管许多其他主题是。

有一些像 this one 这样的 nuget 包可以提供帮助。

我曾经做过一个 POC,它通过使用 OpenXml 打开和更改使用模板的文档来完全按照您的描述进行操作。我会看看我是否可以挖掘代码。但这绝对是一个很好的方向 if Word 是绝对的要求。

这是一个远景,但你能在HTML中输出吗?如果可以的话,这是一个更简单的选择。

可以使用Excel吗?这也是 OpenXml,但有更易于使用的工具,如 EPPlus 可以简化处理它,因为它不仅仅是最友好的工作。

如果您确实想处理 Word 自动化,Microsoft 的指南"Automating Applications Using the Office Object Model" Word 特定任务内容在这里:https://msdn.microsoft.com/en-us/library/78whx7s6(v=vs.80).aspx

一个更大的例子:https://support.microsoft.com/en-us/kb/316384

首先,只需为正确的 Office 对象库添加对项目文件的程序集引用(示例:"Microsoft Word ##.0 Object Library")。请注意,您必须安装 Office 才能采用此方法。

祝你好运!

我建议的一个选项是 Crystal 报告。您可以从 here 免费下载 Visual Studio 的 Crystal 报告加载项。 Crystal 报告是一种从包括 SQL 在内的各种数据源执行报告的简便方法。网上也有很多免费教程可以学习如何使用 CR。语法有点奇怪,但使用起来很简单。

加载项允许您为应用程序创建报告,还可以构建可以显示、打印和导出 Crystal 报告的应用程序。

您可以将报告导出为 .RTF(富文本格式)文件。 MS Word 可以打开、编辑和转换 RTF 文档。它做得相当不错,但特殊格式可能需要一些工作。这条路线比尝试写 XML 或其他任何东西要容易得多。我写了几份专为导出为 RTF 文件而设计的报告。我的老板生成报告,将其导出,然后在 Word 中进行编辑。他喜欢这些报道。

如果您计划开发大量报告,购买 Crystal 报告的完整版是非常值得的。我相信他们目前使用的是 2016 版。