段落の実行を繰り返して、実行に斜体/太字のテキストがあるかどうかを確認し、そのテキストを別のテキストに置き換えようとしています。
パフォーマンスの面でこれが最良の方法です。
段落の実行を繰り返して、実行に斜体/太字のテキストがあるかどうかを確認し、そのテキストを別のテキストに置き換えようとしています。
パフォーマンスの面でこれが最良の方法です。
インラインタグのみに関心がある場合は、次のコードが役立ちます。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();
}
}
スタイルから継承された太字/斜体をカウントするか、インラインの太字/斜体タグに関心があるかによって異なります。