使用Open XML读取已打开的Word文档?

Sha*_*ark 3 ms-word openxml

我见过的所有示例和实现都使用了某些类型的代码,例如:

//filePath is some path to a docx file
using (WordprocessingDocument wpd = WordprocessingDocument.Open(filePath, true))
{
    //Do stuff here
}
Run Code Online (Sandbox Code Playgroud)

这需要关闭您的文件.我希望能够在已经打开的文档上使用Open XML SDK操作,因为我想在用户主动查看文档时做一些事情,我不一定要保存它.

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

如果我能以某种方式在已打开的文档上使用Open XML SDK,那将是非常好的.我有一个想法是暂时保存已打开的文件,并在临时文件上运行OpenXML内容,并以某种方式使用Office API将其与现有文档进行协调.没有想过这种方法,但这不是我想要的理想方式.

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

小智 11

您可以打开Word文档Open XML SDK,其中包含已由办公室打开的文件.您应首先打开FileStream,然后打开指定此流的word文档.这是一个例子:

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