我能够毫无问题地生成Word文档。我将生成的* .docx文件保存到一个临时位置,然后需要在Word中启动该文件。
要求不是在Word中“打开”文件(通过 Process.Start 轻松完成),而是将其作为未保存的新文件加载到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);
答案 0 :(得分:2)
否,Open XML技术无法与Office(Word)应用程序进行交互-仅用于文件创建/操作。为了使用Word应用程序执行任何操作,都需要互操作。
有一种解决方法-只能将Word转换为OPC平面文件格式,并且只能使用Word,其他Office应用程序都不能使用此方法。这会将构成zip文件的各种程序包“连接”为纯文本字符串,特别是单个XML文件。
然后可以使用Range.InsertXML
方法通过“互操作”将OPC平面文件格式的XML内容写入已经打开的(甚至是新创建的)Word文档中。在某种程度上,这会将Open XML内容“流化”到打开的Word文档中。
此方法的问题是某些文档级属性未写入到目标文档,因此并非可以更改打开文档的所有方面。例如:页面大小,方向,页眉,页脚...因此,如果还需要影响这种设置,则需要进行互操作。