我见过的所有示例和实现都使用了某些类型的代码,例如:
//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)
小智 1
Word Add-in 和 Open Xml SDK 似乎可以满足您的要求。您可以找到一个示例@ http://blogs.msdn.com/b/atverma/archive/2012/01/11/utility-to-generate-word-documents-from-templates-using-visual-studio-2010- and-open-xml-2-0-sdk-part-3.aspx