1
我正在使用altChunkId
元素合并DOCX文档文件,但无法查看控件XML元素的内容。无法合并来自Word 2010文件的XML文档内容
我认为这是因为XML所采取内容的引用来自它被合并到的文件夹而不是文件夹本身。
在Word 2007中,该文件显示内容控件的内容,而在Word 2010中则为空白。
重现步骤:
- 打开Word 2010
- 转到开发人员选项卡。
- 添加“纯文本内容控制”。
- 另存为
a.docx
- 创建XML与Word 2007 content control toolkit
- 复制
a.docx
绑定到一个新的文件b.docx
。 代码合并:
using System; using System.Collections.Generic; using System.IO; using System.IO.Packaging; using System.Linq; using System.Text; using System.Xml; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Wordprocessing; class Class1 { static void Main(string[] args) { string doc2 = @"b.docx"; string doc1 = @"a.docx"; using (var myDoc = WordprocessingDocument.Open(doc2, true)) { string altChunkId = "AltChunkId1"; var mainPart2 = myDoc.MainDocumentPart; var chunk = mainPart2.AddAlternativeFormatImportPart( AlternativeFormatImportPartType.WordprocessingML, altChunkId); using (var fileStream = File.Open(doc1, FileMode.Open)) { chunk.FeedData(fileStream); AltChunk altChunk = new AltChunk(); altChunk.Id = altChunkId; mainPart2.Document.Body.InsertAfter(altChunk, mainPart2.Document.Body.Elements<Paragraph>().Last()); mainPart2.Document.Save(); } } } }
与Word 2010打开
b.docx
,你会看到纯文本内容的控制是空的。- 使用Word 2007打开
b.docx
,您将看到纯文本内容控件不为空。
您可以发布b.docx的地方,我们可以看一下吗? – JasonPlutext
你可以分享代码和文档吗? MS已经删除了自定义XML支持,但是因为您使用的数据绑定内容控件不应该是问题。 –