2

lorem.docx次の内容の Word 文書があります。

Lorem Ipsum は、印刷および植字業界の単なるダミー テキストです。

[青い]

Lorem Ipsum は、1500 年代に未知の印刷業者がタイプのギャレーを取り、それをスクランブルしてタイプ見本帳を作成して以来、業界の標準的なダミー テキストでした。

[/青い]

それは 5 世紀だけでなく、電子植字への飛躍にも耐え、本質的に変わっていません。

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

ただし、ドキュメント全体の色が変わります。BLUE タグ間のテキストの色を変更する必要があります。

これどうやってするの?

4

1 に答える 1

0

コードがすべての RunProperties を反復しているように見えるため、すべてが変更されています。

OpenXML ドキュメントの基本構造は次のとおりです。

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

RunProperty は Run の子になります。各要素を調べて、探しているもの (例では "[BLUE]") を含むテキストを探し、変更をその親の Run にのみ適用する必要があります。

Word は必ずしもテキストを 1 つの Text 要素に配置するとは限らず、複数に分割される可能性があるため、これは少し注意が必要ですが、これはより単純なケースであるため、現在のように Text の子孫を探すだけでよいので、InnerText を "[ BLUE]" を開き、その RunProperty を変更します。次の実行でそれを黒にリセットする必要があるかもしれません。

于 2014-07-16T07:03:21.630 に答える