OpenXML可以用来启动一个新的Word实例吗



我能够毫无问题地生成Word文档。我将生成的*.docx文件保存到一个临时位置,然后需要在Word中启动该文件。

要求是不要在Word中"打开"文件(使用进程即可轻松完成。启动),而是将其作为新的未保存文件加载到Word中。这是因为当用户保存文件时,Word的某些适当集成需要接管,如果文件已经保存好,但已保存到磁盘上的某个位置,则不会启动。

我通过使用对Word应用程序的Interop调用,将新文档添加到Word的工作区来实现这一点。我的问题是Interop,它往往会在各种客户端机器上崩溃,尤其是在进行Office升级时(比如客户端有32位的Office,但升级了64位版本)。

我对OpenXML有点陌生,但它能用来自动化Word吗?或者Interop是我唯一真正的选择吗?

object oFilename = tmpFileName;
object oNewTemplate = false;
object oDocumentType = 0;
object oVisible = true;
Document document = _application.Documents.Add(ref oFilename, ref oNewTemplate, ref oDocumentType, ref oVisible);

不,开放式XML技术无法与Office(Word)应用程序交互,只能用于文件创建/操作。使用Word应用程序执行任何操作都需要互操作。

有一种方法可以解决这个问题——只有Word才有可能,其他Office应用程序都没有——就是将Open XML内容转换为OPC平面文件格式。这将组成zip文件的各种包"连接"为纯文本字符串,本质上是一个XML文件。

然后,可以使用Range.InsertXML方法通过"interop"将OPC平面文件格式的XML内容写入已打开的(甚至是新创建的)Word文档。在某种程度上,这将OpenXML内容"流式传输"到打开的Word文档中。

这种方法的问题是,某些文档级别的属性被而不是写入目标文档,因此打开的文档的所有方面都不能更改。例如:页面大小、方向、页眉、页脚。。。因此,如果这种事情也需要受到影响,则需要对此类设置进行互操作。

相关内容

最新更新