我有一个使用open xml处理word文档的应用程序。
因此,当我创建word文档时,我添加了一些内容控件。
为此,我选择了一个文本,然后在单词开发人员面板上单击“创建内容控件”。
问题是,它似乎正在将我的文本切割成几个不同的版本。
因此,当我想替换内容控件中的文本时,它不会替换所有文本,因为它已被拆分。
有人有任何解释吗?
我该如何解决这个问题?
对于信息,这是我获得sdtElement的方式:
SdtBlock sdtElement = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>()
.Where(element =>
element.SdtProperties.GetFirstChild<SdtAlias>() != null &&
element.SdtProperties.GetFirstChild<SdtAlias>().Val == "CADRE").SingleOrDefault();
if (sdtElement != null)
{
sdtElement.Descendants<Text>().FirstOrDefault().Text = "Some text";
}
有没有办法在我的内容控件中避免这种分裂。因为它不应该发生,因为在创建控件之前文本被选为一个。
编辑:正如JasonPlustext所说,好问题是:我怎样才能确定这种分裂不会发生?
这是xml:
<w:sdtContent>
<w:sdt>
<w:sdtPr>
<w:rPr>
<w:b />
<w:sz w:val="26" />
</w:rPr>
<w:alias w:val="CADRE" />
<w:tag w:val="CADRE" />
<w:id w:val="-535731825" />
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_1082065158" />
</w:placeholder>
<w:text />
</w:sdtPr>
<w:sdtEndPr />
<w:sdtContent>
<w:p w:rsidR="00E07C25" w:rsidRDefault="00EB5705">
<w:pPr>
<w:pBdr>
<w:top w:val="single" w:color="auto" w:sz="12" w:space="1" />
<w:left w:val="single" w:color="auto" w:sz="12" w:space="1" />
<w:bottom w:val="single" w:color="auto" w:sz="12" w:space="1" />
<w:right w:val="single" w:color="auto" w:sz="12" w:space="1" />
</w:pBdr>
<w:shd w:val="pct20" w:color="auto" w:fill="auto" />
<w:ind w:left="567" w:right="566" />
<w:jc w:val="center" />
<w:rPr>
<w:b />
<w:sz w:val="26" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b />
<w:sz w:val="26" />
</w:rPr>
<w:t>$CA</w:t>
</w:r>
<w:r w:rsidR="004943F1">
<w:rPr>
<w:b />
<w:sz w:val="26" />
</w:rPr>
<w:t>DRE$</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
</w:sdtContent>
此外,我尝试删除文本,并重写它,这次,它没有拆分文本。
问题是,我收到了很多文件,所以我需要做很多工作来重写它们。
是否有最简单的解决方案?
谢谢。