Ms word 是否使用Open XML读取已打开的Word文档?

Ms word 是否使用Open XML读取已打开的Word文档?,ms-word,openxml,Ms Word,Openxml,我看到的所有示例和实现都使用了某种类型的代码,如: //filePath is some path to a docx file using (WordprocessingDocument wpd = WordprocessingDocument.Open(filePath, true)) { //Do stuff here } 这需要关闭您的文件。我希望能够在已经打开的文档上使用openxmlsdk操作,因为我希望在用户积极查看文档时执行一些操作,而不一定要保存它 这可能吗?我意识到

我看到的所有示例和实现都使用了某种类型的代码,如:

//filePath is some path to a docx file
using (WordprocessingDocument wpd = WordprocessingDocument.Open(filePath, true))
{
    //Do stuff here
}
这需要关闭您的文件。我希望能够在已经打开的文档上使用openxmlsdk操作,因为我希望在用户积极查看文档时执行一些操作,而不一定要保存它

这可能吗?我意识到Word可能会在文档打开时锁定它,因此您无法打开该文件(即使是只读文件)。有什么办法吗

如果我能在已经打开的文档上使用OpenXMLSDK,那就太好了。我的一个想法是暂时保存已经打开的文件,在临时文件上运行OpenXML,并使用OfficeAPI将其与现有文档进行协调。我还没有仔细考虑过这个方法,但这不是我想要的理想方法


我还知道Word API上的一个属性,它通过执行
Word.Range.XML
返回XML字符串。但是,我不确定如何将此字符串值加载到SDK中,以便利用其方法来帮助我。

Word加载项和Open Xml SDK似乎满足您的要求。您可以找到一个示例@

您可以打开word文档打开XML SDK,其中文件已由office打开。 您应该首先打开一个文件流,然后打开指定此流的word文档。以下是一个例子:

using (Stream stream = new FileStream(file,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
 using (WordprocessingDocument wpd = WordprocessingDocument.Open(stream, false))
 {
  ....
 }
}

当文件以只读方式打开时,它将以只读方式打开,Word(和大多数其他Office应用程序)确实会以该模式打开文件。好吧,一旦只读生效,就不可能告诉操作系统应该忽略它。(这真的很好-你能想象这样说的可能效果吗?)是的,我完全理解它为什么会被锁定。我想我有一些想法,因为我们可以通过Word API操作文件,所以我可以用Open XML做同样的操作,但那是错误的。谢谢,这正是我想要的。似乎混合方法(OfficeAPI和OpenXML)是唯一的方法。我注意到代码使用Document.Range().InsertXML覆盖中的新值。您知道Document.Range()不包括其范围内的页眉/页脚吗?@Shark,您是否有一个使用
Document.Range().InsertXML
?.InsertXML()写入页眉/页脚的解决方案。InsertXML()只是范围对象上的一个方法,因此您应该能够使用HeaderFooter.Range()对象插入页眉/页脚。(即Document.Sections[1]。标题[WdHeaderFooterIndex.wdheaderFooExperimary].Range().InsertXML(…)