尝试从打开的xml文件创建互操作应用。我正在使用来自Open Xml SDK的word文件的反映代码。当我试图将Open Xml文档的xml插入到互操作文档
时doc.Range().InsertXML(package.MainDocumentPart.Document.OuterXml);
此行抛出System.Runtime.InteropServices.COMException
,表示无法将XML插入该位置。
这是完整的代码
public void CreatePackage()
{
using (MemoryStream mem = new MemoryStream())
{
using (WordprocessingDocument package = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document))
{
CreateParts(package);
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = app.Documents.Add(System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
doc.Range().InsertXML(package.MainDocumentPart.Document.OuterXml);
doc.Activate();
}
}
}
答案 0 :(得分:1)
你可以这样做:
public void CreatePackage()
{
using (MemoryStream mem = new MemoryStream())
{
using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document))
{
CreateParts(wordDocument);
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = app.Documents.Add(System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
XDocument xDoc = OPCHelper.OpcToFlatOpc(wordDocument.Package);
string openxml = xDoc.ToString();
doc.Range().InsertXML(openxml);
doc.Activate();
}
}
}
获取OPCHelper
类的代码您可以从此处Utility to generate Word documents from template获取代码。
答案 1 :(得分:0)
我会将OpenXML保存到临时文件并使用interop在Word中打开该文件。但我不知道interop是否应该支持XML,所以我无法回答为什么InsertXML不起作用。我怀疑它并不期望OpenXML类型的XML,而是其他东西。