我见过的所有示例和实现都采用了某种类型的代码,如:
//filePath is some path to a docx file
using (WordprocessingDocument wpd = WordprocessingDocument.Open(filePath, true))
{
//Do stuff here
}
需要关闭您的文件。我希望能够在已经打开的文档上使用Open XML SDK操作,因为我希望在用户主动查看文档时做一些事情,而我不一定要保存它。
这可能吗?我意识到如果文档打开,Word可能会锁定文档,因此您无法打开文件(即使是只读文件)。有什么方法吗?
如果我能以某种方式在已打开的文档上使用Open XML SDK,那真的很好。我有一个想法是暂时保存已打开的文件,并在临时文件上运行OpenXML内容,并以某种方式使用Office API将其与现有文档进行协调。 Haven没有想到这种方法,但这并不是我想要做的理想方式。
我也知道Word API上的一个属性,它通过Word.Range.XML
返回一个XML字符串。但是,我不确定如何将此字符串值加载到SDK中,以便我可以利用其方法来帮助我。
答案 0 :(得分:11)
您可以打开Word文档打开XML SDK,文件已经由办公室打开。 您应首先打开FileStream,然后打开指定此流的word文档。这是一个例子:
using (Stream stream = new FileStream(file,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
using (WordprocessingDocument wpd = WordprocessingDocument.Open(stream, false))
{
....
}
}
答案 1 :(得分:1)
Word加载项以及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