VSTO实现向Word内容控件追加XML内容而非覆盖的方法
解决Word内容控件中追加XML内容的问题
问题出在cc.Range.InsertXML默认会替换整个Range范围内的内容,所以你循环里每次插入都会覆盖之前的内容,最后只剩最后一段XML。要实现追加,关键是每次插入后把Range定位到当前内容的末尾,再插入下一段。
修改后的代码如下:
foreach (ContentControl cc in targetDoc.ContentControls) { if (cc.Tag == "X_Placeholder") { // 可选:如果需要先清空内容控件原有内容,保留这行;不需要则删除 cc.Range.Text = ""; foreach (var tbContent in textBrickContentList) { // 将Range折叠到当前内容的末尾,避免替换原有内容 cc.Range.Collapse(WdCollapseDirection.wdCollapseEnd); cc.Range.InsertXML(tbContent); } } }
关键说明
WdCollapseDirection.wdCollapseEnd会把Range的起始和结束位置都移到现有内容的最后,这样下一次InsertXML就会在末尾追加内容,而非替换整个Range。- 如果需要保留内容控件原本的内容,直接删掉
cc.Range.Text = ""这一行即可。
内容的提问来源于stack exchange,提问作者manti13
相关产品推荐
相关产品推荐

