【问题标题】:Generating a Word Document with C#使用 C# 生成 Word 文档
【发布时间】:2009-05-31 16:38:57
【问题描述】:

给定一个邮寄地址列表,我需要打开一个现有的 Word 文档,该文档的格式可以打印标签,然后将每个地址插入表格的不同单元格中。当前解决方案打开 Word 应用程序并移动光标以插入文本。但是,在阅读了与从 Web 应用程序打开较新版本 Word 相关的安全问题和问题后,我决定需要使用另一种方法。

我已经研究过使用 Office Open XML,但我没有找到任何好的资源来提供关于如何使用它的具体信息。另外,有人建议我使用 SQL 报告服务,但搜索有关如何使用它们的信息,却无济于事。

您认为哪种方法最适合我的问题?

代码示例和优秀教程的链接将非常有帮助。

【问题讨论】:

    标签: c# .net reporting-services ms-word openxml


    【解决方案1】:

    感谢所有答案,但我真的不想为插件付费,而且使用 Word 自动化是不可能的。所以我一直在寻找,最终通过反复试验找到了一些答案。

    在彻底搜索了微软的网站后,我发现了一些关于 Office Open XML SDK 的更新文章。我下载了新工具并开始浏览它们。

    然后我找到了 Document Reflector,它创建了一个类来根据现有的 Word 文档 (.docx) 生成 XML 代码。使用我的标签模板文档和该工具生成的代码,我完成并添加了一个循环,为每个地址附加表格单元格。事实证明,它比使用 Word 自动化相当简单且速度更快。

    因此,如果您仍在使用 Word 自动化,请查看 Office Open XML 工具。它们令人惊讶地广泛,可从 Microsoft 免费下载。

    Office Open XML SDK 2.0 Download

    【讨论】:

    • OpenXml SDK 2.0 仍处于 CTP 中,许可仅用于测试目的(直到 Office 14 出现)
    【解决方案2】:

    我使用 Aspose.com 的 Words 插件来进行邮件合并 (programming guide)。

    【讨论】:

    • 感谢您的快速回复。不过,我一直在寻找免费的解决方案,因此我不必担心许可问题。
    • Aspose 按开发人员或站点获得许可,一种类型的许可允许分发到任意数量的物理站点(开发人员或站点 OEM 许可)。
    • 我们应用程序的这一方面并不重要,不足以证明为扩展插件付费是合理的。你知道任何免费的替代品吗?
    【解决方案3】:

    您可以在 dnrTV (www.dnrtv.com) 上观看节目 137 和 138。在这些视频中,Beth Massi 展示了如何使用 OpenXML 进行一些编辑和邮件合并。她通过在 VB 中使用 Open XML SDK 和 xml 文字来做到这一点。它不需要第三方组件。此外,它不需要在机器上安装 MS Office。

    这个视频启发了我作为一个 C# 开发人员(并且没有 VB 经验)在 VB 中的一个单独的 dll 中进行一些 XML 操作。我从我的 C# 应用程序调用这个 dll。

    值得一试。

    【讨论】:

      【解决方案4】:

      我们有 tvanfosson 提到的产品 Aspose。我们购买的版本与 SQL Reporting Services 一起使用,因此可以与调度程序一起使用以创建输出。它确实是一个很棒的产品,我们在需要在最终文档中支持韩文字符的系统中使用。它工作得很好,在支持下不到 1000 美元。还不错。

      使用这样的产品的优势在于,您可以继续管理您的数据,并且生成文档所需的技能集处于各种开发人员可以支持其使用的水平。

      【讨论】:

        【解决方案5】:

        范思哲,

        如果您真的想在代码中执行此操作,请查看我刚刚在 Google 上找到的这篇文章

        http://kellychronicles.spaces.live.com/blog/cns!A0D71E1614E8DBF8!1364.entry

        【讨论】:

        • 这需要您打开 Word 应用程序,目前还不是一个选项。
        • @Vanstee,您可以将代码更改为在控制台应用程序中工作,并且通过将其 Visibility 设置为 false 从不显示 Word。你想要一个例子吗?
        • 显示 Word 并不是真正的问题。要从 Web 应用程序访问较新版本的 Word,您必须为其授予一些高级权限。我们的服务器管理员拒绝这样做,在阅读后我不会责怪他。无论如何,谢谢。
        • @Vanstee,我收回了,我没有看到有关 Web 应用程序的部分,也许更新您的问题的标题或加粗该部分。您可以执行邮件合并,然后检查文档。观看此视频:channel9.msdn.com/posts/LarryLarsen/...,这家伙提到了一个查看文档的工具。完成此操作后,您可以看到生成的 XML 词,并尝试复制它。在这种情况下,第三方库可能是更好的选择。
        【解决方案6】:

        如果您正在使用报告服务,您不能将 word doc 中的信息移动到数据库表中并从那里读取它,从而将 word 排除在等式之外吗?

        【讨论】:

        • 这真是个好主意!
        猜你喜欢
        • 2017-01-26
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多