2015-11-16 1 views
0

Я использую Open XML SDK, чтобы выделить конкретное слово внутри файла docx, но я не смог этого сделать, после обширного исследования я сделал следующее. Я попытался открыть документа, а затем отредактируйте цвет слова и сохраните его снова, но я ничего не могу сохранить, когда нашел время последнего редактирования документа с датой даты.Невозможно выделить слово в текстовом файле с помощью OpenXML

Что не так с этим кодом?

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

Возможный дубликат [выделение текста в Docx с использованием C#] (http://stackoverflow.com/questions/26131230/highlighting-text-in-docx-using-c-sharp) – MethodMan

+0

вы можете рассказать нам, что не так с код .. вы его написали ... можете ли вы пройти через код и определить, где происходят проблемы.? – MethodMan

ответ

1

Создайте простой документ в приложении Word с нужным форматированием. Сохрани и закрой. Откройте документ в Инструменте производительности Open XML SDK. Это создаст код, необходимый для создания документа. Затем вы можете сравнить свой код с кодом инструмента.

FWIW любое форматирование является дочерним элементом RunProperties, поэтому добавление цвета непосредственно в Run не может работать. Кроме того, вам нужно создать объект для вида форматирования (из вашего описания не ясно, хотите ли вы изменить цвет текста или применить форматирование выделения). Это то, что добавлено к RunProperties. Также важно, чтобы ваш код сначала проверял, доступны ли RunProperties для Run. Если нет, то сначала нужно создать, прежде чем что-либо может быть добавлено к нему.