【问题标题】:How to create a clone of a word document object?如何创建 word 文档对象的克隆?
【发布时间】:2013-04-23 13:31:35
【问题描述】:

如何在 c# 中创建 word 文档的克隆? (Office 2007 图书馆)

public copyDocument (Word.Document _originalDocument)
{
    //How do I clone the _originalDocument?
    Word.Document clonedDocument = _originalDocument;

    //Do stuff to cloneDocument without effecting _originalDocument
}

所以我想要做的是获取原始文档的克隆,然后对其进行更改而不影响原始文档。有了上述内容,如果我对 cloneDocument 进行更改,它们也将应用于 _originalDocument。

【问题讨论】:

  • 您是否尝试将其副本保存在新位置,然后打开该新副本?
  • 您的代码是否在 Word 的交互式实例(即作为加载项)中运行,其中相关文档也由用户编辑?还是您的应用程序是独立的(在后台运行)?
  • George - Thx 但恐怕这不是一个选项:/ 必须保存在内存中。
  • 0xA3 - 是的,它是一个插件,用户可以继续编辑文档。 - 原件是正在运行的当前打开的文档,而克隆是在事件中制作的文档的副本。我想稍后再换回来。

标签: c# ms-word ms-office office-2007


【解决方案1】:

由于您使用的是 Office 2007,因此值得您花时间查看DocX

DocX 允许您在内存中加载或创建文档,而无需在后台打开 Word(Office 2007 支持类似 XML 的格式)。它既快速又轻巧,甚至不需要安装 Word(如果您在服务器上部署,真的很方便)。

此外,您可以轻松地克隆文档,对克隆进行更改并保存它,并且不会影响原始文档:

DocX testTemplate = DocX.Load("C:\\test.docx");
Paragraph p = testTemplate.InsertParagraph("Hello World.");

DocX testDoc = testTemplate;
Paragraph p = testDoc.InsertParagraph("Foo.");

testDoc.SaveAs("C:\\test2.docx");
testTemplate.Save();

//testTemplate only contains a "Hello World" paragraph

【讨论】:

  • 感谢 Circular Reference 的建议,但我不能使用第 3 方库的 :(
  • hm...我玩过它,但无法重现您的错误,原始文档不受影响。如果您仍在寻找答案,您可以分享更多源代码吗?
猜你喜欢
  • 2011-05-06
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2015-09-20
  • 2017-06-19
  • 2014-08-29
相关资源
最近更新 更多