我有一个包含以下内容的Word文档lorem.docx
:
Lorem Ipsum只是打印和排版的虚拟文本 行业。
[蓝色]
Lorem Ipsum自此以来一直是业界标准的虚拟文本 16世纪,当一个未知的打印机拿出一个类型的厨房并乱扰它 制作一本样本书。
[/ BLUE]
它不仅存活了五个世纪,而且还在飞跃中幸存下来 电子排版,基本保持不变。
我需要更改[BLUE]和[/ BLUE]之间特定paragrah的颜色。我有这段代码:
string path = @"C:\Users\Kenneth\Desktop\lorem.docx";
using (WordprocessingDocument document = WordprocessingDocument.Open(path, true))
{
DocumentFormat.OpenXml.Wordprocessing.Document doc = document.MainDocumentPart.Document;
// Get and set the style properties of each content control
foreach (var itm in elements)
{
try
{
List<Text> textparts = document.MainDocumentPart.Document.Body.Descendants<DocumentFormat.OpenXml.Wordprocessing.Text>().ToList();
// CHANGE COLOR:
foreach (RunProperties rp in list_runProperties)
{
rp.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "cc0000" };
}
}
}
}
但它改变了整个文档的颜色。我需要更改BLUE标签之间文本的颜色。
我该怎么做?
答案 0 :(得分:0)
看起来您的代码只是遍历所有RunProperties,这就是他们所有变化的原因。
OpenXML文档的基本结构是:
<Document>
<Body>
<Paragraph>
<Run>
<RunProperty>
<Text>
其中RunProperty将是Run的子级。您需要遍历每个元素,查找包含您要查找的内容的文本(&#34; [BLUE]&#34;在示例中)并仅将更改应用于其父Run。
这可能有点棘手,因为Word不一定会将文本放在单个Text元素中,并且可能会将其拆分为多个但是因为这是一个更简单的情况,您可以只查找当前的Text后代,比较它的内心文字带有&#34; [蓝色]&#34;并更改该RunProperty。您可能还需要在以下运行时将其重置为黑色,因为我不确定是否会这样做。