OpenXML 能否用于启动新的 Word 实例?
Can OpenXML be used to launch a new Word instance?
我可以毫无问题地生成 Word 文档。我将生成的 *.docx 文件保存到一个临时位置,然后需要在 Word 中启动该文件。
要求不是 "open" Word 中的文件(使用 Process.Start 即可轻松完成),而是作为 新的未保存 文件。这是因为 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);
不,Open XML 技术无法与 Office (Word) 应用程序交互 - 它仅用于文件 creation/manipulation。需要互操作才能对 Word 应用程序执行任何操作。
有一种方法可以解决此问题 - 只有 Word 才有可能,其他 Office 应用程序没有这种方法 - 将打开的 XML 内容转换为 OPC 平面文件格式。 "concatenates" 组成 zip 文件的各种包为纯文本字符串,本质上是一个 XML 文件。
然后可以将 XML OPC 平面文件格式的内容写入 已经打开的 (甚至是新创建的)Word 文档,使用 Range.InsertXML
通过 "the interop" 的方法。在某种程度上,这"streams"打开XML内容到打开的Word文档中。
此方法的问题是某些文档级属性不会写入目标文档,因此并非打开的文档的所有方面都可以更改。例如:页面大小、方向、页眉、页脚...因此,如果此类事情也需要受到影响,则此类设置需要互操作。
我可以毫无问题地生成 Word 文档。我将生成的 *.docx 文件保存到一个临时位置,然后需要在 Word 中启动该文件。
要求不是 "open" Word 中的文件(使用 Process.Start 即可轻松完成),而是作为 新的未保存 文件。这是因为 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);
不,Open XML 技术无法与 Office (Word) 应用程序交互 - 它仅用于文件 creation/manipulation。需要互操作才能对 Word 应用程序执行任何操作。
有一种方法可以解决此问题 - 只有 Word 才有可能,其他 Office 应用程序没有这种方法 - 将打开的 XML 内容转换为 OPC 平面文件格式。 "concatenates" 组成 zip 文件的各种包为纯文本字符串,本质上是一个 XML 文件。
然后可以将XML OPC 平面文件格式的内容写入 已经打开的 (甚至是新创建的)Word 文档,使用 Range.InsertXML
通过 "the interop" 的方法。在某种程度上,这"streams"打开XML内容到打开的Word文档中。
此方法的问题是某些文档级属性不会写入目标文档,因此并非打开的文档的所有方面都可以更改。例如:页面大小、方向、页眉、页脚...因此,如果此类事情也需要受到影响,则此类设置需要互操作。