【问题标题】:How to Read .Doc Template File and Edit Template with Values?如何读取 .Doc 模板文件并使用值编辑模板?
【发布时间】:2012-01-16 08:29:20
【问题描述】:

我有一个文档模板,我想使用该模板将客户信息与该模板合并(将 、 替换为数据库中的信息。

为此,我首先需要阅读文档,更新字段,然后使用标签替换数据保存它。

任何人都可以帮我想象一下吗?如何做到这一点以及使用什么工具?

谢谢, 吉格

【问题讨论】:

  • 如果您在所有要运行程序的机器上都安装了 MS Word,您可以使用 Word 自动化,它可以被 C# 使用
  • 服务器端 Office/Word 自动化是每 KB257757 的死胡同。不要试图给自己添麻烦。
  • MS 可能正式声明不推荐或不支持服务器端的 Office 自动化,但只要您小心处理意外响应和挂起,它就可以工作。您只需要以服务用户身份登录并确保 Office 已设置,以便在打开时不会显示任何对话框提示(因为自动化无法处理它们)。我目前使用并支持使用服务器端办公自动化的应用程序 - 是的,设置起来很辛苦,但一旦配置好它就稳定了。
  • 由于.doc 扩展名,我假设您没有使用 word 2007+?
  • 除了将放在文档的文本中之外,至少还有另外两种方法:使用域代码的传统邮件合并和内容控制数据绑定。这两个都更好,因为它们解决了 在运行中被拆分(并且无法匹配)的问题。你在乎你用哪个? (这可能归结为谁在创作模板)。

标签: c# asp.net ms-word openxml


【解决方案1】:

我从http://docx.codeplex.com/ 工具中找到了答案。它真的是一个超级酷的工具,可以在您的文档模板中进行修改。

考虑一下 - 只需极少的努力即可为您做好准备。

【讨论】:

    【解决方案2】:

    您将不得不使用 OpenXML 技术来操作 word 文档并将动态内容插入到 word 文档中。 我假设您为此目的使用 docx word 文档。 docx 文件实际上是一个压缩文件,其中包含许多 xml 文件,而这些文件又可以使用 c# 使用 OpenXML API 进行操作。在您的情况下,单词的内容将位于名为“document.xml”的 xml 中。您必须阅读此 XML 并将 占位符替换为数据库中的数据。 关于这些概念,我已经写了 2 篇文章(带有源代码)。您可以使用以下链接进行提醒。

    http://www.codeproject.com/KB/office/Word_2007_Footnote.aspx http://www.codeproject.com/KB/office/Word_2007_Images.aspx

    虽然它可能无法为您提供特定问题的确切解决方案,但您可以使用它来开始一些事情(例如如何使用 OpenXML API 和 c# 读取 document.xml),然后您可以继续工作你自己来解决你的问题。

    编辑:没有注意到您提到 .doc 文件。我看到了它的 OpenXML 标签,因此回复了。我猜这个解决方案只适用于文档是 .docx 的情况。

    【讨论】:

    • Hey Abey 这会成功的。使用 Open XML 我们如何修改数据?请告诉我
    • 正如我所说,如果您的文档模板是 docx 文件,它会起作用。在 docx 文件中,一定要有 占位符。在运行时,您可以使用 OpenXML API 将占位符值更改为来自数据源的值。请务必浏览第一个链接中提供的源代码。这是非常直接的。如果您有疑问,我可以帮助您。谢谢!
    • 好吧,我的页眉中的占位符很少,页脚中的占位符很少,而正文部分的其余部分。您能否指导我从哪里获得代码或工作模型?我在这些部分中有模板。请告诉我该怎么做?
    • 点击链接codeproject.com/KB/office/Word_2007_Footnote.aspx中的“下载源代码”链接。源代码包含 Footnotes.sln 解决方案。里面的源代码可以帮助你入门。
    【解决方案3】:

    你可以试试http://worddocgenerator.codeplex.com/。 WordDocumentGenerator 是一个实用程序/示例,用于使用 Visual Studio 2010 和 Open XML 2.0 SDK 从模板生成 Word 文档。

    【讨论】:

      【解决方案4】:

      您可以与 Aspose 预售人员交谈,看看这些组件是否有帮助,

      http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx

      此外,Microsoft SharePoint Server 2010 具有 Word 自动化服务,

      http://msdn.microsoft.com/en-us/library/ff742315.aspx

      不要尝试使用服务端办公自动化,因为它是死胡同,

      http://support.microsoft.com/kb/257757

      【讨论】:

        【解决方案5】:

        我相信您正在寻找 Word 文档的“邮件合并”功能。请参阅 Aspose.Words for .NET 文档的“Mail Merge and Reporting”部分中的帮助主题。

        披露:我在 Aspose 担任开发人员布道师。

        【讨论】:

          【解决方案6】:

          Docmosis 是多平台工具,可以使用 .doc 文件作为模板并通过类似邮件合并的过程进行填充。默认情况下,它使用文档字段和纯文本中的 > 表示法。

          【讨论】:

            猜你喜欢
            • 2011-07-05
            • 1970-01-01
            • 2020-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多