2012-05-16 45 views

回答

4

如果您只對嵌入式標籤感興趣,以下代碼可以提供幫助。只需將Convert()方法更改爲任何你想要的。

using System.Linq; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Wordprocessing; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var doc = WordprocessingDocument.Open(@"c:\doc1.docx", true)) 
     { 
      foreach (var paragraph in doc.MainDocumentPart.RootElement.Descendants<Paragraph>()) 
      { 
       foreach (var run in paragraph.Elements<Run>()) 
       { 
        if (run.RunProperties != null && 
         (run.RunProperties.Bold != null && (run.RunProperties.Bold.Val == null || run.RunProperties.Bold.Val) || 
         run.RunProperties.Italic != null && (run.RunProperties.Italic.Val == null || run.RunProperties.Italic.Val))) 
         Process(run); 
       } 
      } 
     } 
    } 

    static void Process(Run run) 
    { 
     string text = run.Elements<Text>().Aggregate("", (s, t) => s + t.Text); 
     run.RemoveAllChildren<Text>(); 
     run.AppendChild(new Text(Convert(text))); 

    } 

    static string Convert(string text) 
    { 
     return text.ToUpper(); 
    } 
} 
+0

此代碼是否修改docx文檔? – Kiquenet

0

這取決於您是要從樣式中統計繼承的粗體/斜體還是僅對內聯粗體/斜體標籤感興趣。

+0

謝謝,湯米。我只對內聯標籤感興趣。 – etr

相關問題