gpt4 book ai didi

c# - 使用 OpenXML 更改段落中的颜色文本

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:59 26 4
gpt4 key购买 nike

我有一个包含以下内容的 Word 文档 lorem.docx:

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

[BLUE]

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

[/BLUE]

It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.

我需要在 [BLUE] 和 [/BLUE] 之间更改特定段落的颜色。我有这段代码:

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" };
}
}
}
}

但是它改变了整个文档的颜色。我需要更改蓝色标签之间文本的颜色。

我该怎么做?

最佳答案

看起来您的代码只是遍历所有 RunProperties,这就是它们都在变化的原因。

OpenXML 文档的基本结构是:

<Document>
<Body>
<Paragraph>
<Run>
<RunProperty>
<Text>

其中 RunProperty 将是 Run 的子项。您需要遍历每个元素以查找包含您要查找的内容的文本(示例中的“[BLUE]”),并且仅将更改应用于其父运行。

这可能有点棘手,因为 Word 不一定会将文本放在单个 Text 元素中并可能将其拆分为多个元素,但由于这是一个更简单的情况,您可以像目前一样查找 Text 后代,比较它的 InnerText使用“[BLUE]”并更改那个的 RunProperty。您可能还需要在接下来的运行中将其重置为黑色,因为我不确定它是否会这样做。

关于c# - 使用 OpenXML 更改段落中的颜色文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com