【问题标题】:Duplicate Word Document Using OpenXML While Open Original Document打开原始文档时使用 OpenXML 复制 Word 文档
【发布时间】:2023-09-02 21:27:01
【问题描述】:

我需要创建现有 word 文档的相同副本,并在打开原始第一个文档时将其作为另一个实例打开。第二个word文档不保存,但用户可以选择是否保存。

这需要使用 OpenXML 来完成。

我将在此处附上当前的实现。这个实现有几个问题。

  1. 在 WordprocessingDocument using 语句中使用前需要先关闭第一个文档。

  2. 第二个新建的文档需要保存在本地文件夹中。

代码初始化

 var doc = Globals.ThisAddIn.Application.ActiveDocument;
            doc.Save();
            string fileName = doc.FullName;
            doc.Close();
            using (WordprocessingDocument document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
            {

}

【问题讨论】:

    标签: c# openxml openxml-sdk word-addins


    【解决方案1】:

    为什么需要使用 OpenXML?使用 Interop,您可以简单地:

    • 打开现有文档
    • 复制文档范围内的所有内容
    • 创建一个新文档
    • 将另一个文档粘贴到新文档中

    它完成得很快,完美地完成了这项工作

    【讨论】:

    • 我有一个互操作的解决方案,但在这里我需要使用 openxml 来完成
    • 问题是OpenXml操作的是包而不是word应用程序本身,这就是为什么你必须保存它并且不能让它“打开”,因为没有word应用程序在运行。您能解释一下为什么只需要使用 openxml 来完成吗?
    • 我们的期望是将 cmets 添加到需要添加 cmets 的新重复词实例中。目前我们使用普通互操作服务完成。但是将 cmets 添加到复制的新文档中需要一些时间。所以我们可能会考虑一种使用 openxml 加速添加 cmets 部分的方法。如果没有效果,我们是否有另一种方法来提升大文档添加 cmets。
    • 如果您的互操作问题是速度问题,您应该首先确定什么需要时间(复制?打开?定位插入位置?插入本身?)。优化取决于问题
    最近更新 更多