我正在使用Open XML SDK来突出显示docx文件中的特定单词,但我无法做到这一点,经过广泛的研究后,我做了以下尝试打开文档,然后编辑单词的颜色并保存它再一次,但是当我发现文件的最后编辑时间与现在的日期时,我没有得到任何保存。
该代码有什么问题?
void HighLightWord(string documentUrl, string word)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(documentUrl, true))
{
var body = wordDoc.MainDocumentPart.Document.Body;
var paras = body.Elements<Paragraph>();
DocumentFormat.OpenXml.Wordprocessing.Color color = new DocumentFormat.OpenXml.Wordprocessing.Color();
foreach (var para in paras)
{
foreach (var run in para.Elements<Run>())
{
foreach (var text in run.Elements<Text>())
{
if (text.Text.Contains(word))
{
color.Val = "365F91";
run.Append(color);
wordDoc.MainDocumentPart.Document.Save();
return;
}
}
}
}
wordDoc.Close(); // close the template file
}
}
答案 0 :(得分:1)
使用您需要的格式在Word应用程序中创建一个简单文档。保存并关闭。在Open XML SDK Productivity Tool中打开文档。这将生成创建文档所需的代码。然后,您可以将代码与工具的代码进行比较。
FWIW任何类型的格式都是RunProperties的子元素,因此直接将颜色附加到Run无法正常工作。此外,您需要为格式化创建一个对象(从您的描述中不清楚您是否要更改文本颜色或应用高亮格式)。这就是附加到RunProperties的内容。您的代码首先检查RunProperties是否可用于Run,这一点也很重要。如果没有,首先需要创建,然后才能附加任何内容。