段落を操作する
このトピックでは、Open XML SDK Paragraph クラスと、Open XML ファイル形式 WordprocessingML スキーマとの関係について説明します。
WordprocessingML の段落
次の記述は、ISO/IEC 29500 の仕様からの引用で、WordprocessingML ドキュメントの段落を表す Open XML WordprocessingML 要素について説明しています。
WordprocessingML ドキュメント内のブロック レベルコンテンツの最も基本的な単位である段落は、 <p>
要素を使用して格納されます。 段落は、新しい行で始まる 1 つの区分を定義します。 段落には、段落のプロパティ (省略可能)、インライン コンテンツ (一般的にはセクション)、および 2 つのドキュメントのコンテンツを比較するリビション ID (省略可能) の 3 つの情報要素を含めることができます。
段落のプロパティは、 <pPr>
要素を使用して指定されます。 段落のプロパティには、配置、罫線、ハイフネーションの無効化、インデント、行間、網かけ、テキストの方向、段落内での改ページ処理などがあります。
© ISO/IEC 29500: 2016
次の表に、段落の操作で使用する、最も一般的な Open XML SDK のクラスを示します。
WordprocessingML 要素 | Open XML SDK クラス |
---|---|
p | Paragraph |
pPr | ParagraphProperties |
r | Run |
t | テキスト |
Paragraph クラス
Open XML SDK Paragraph クラスは、上記の WordprocessingML ドキュメントの Open XML ファイル形式スキーマで定義されている段落 <p>
要素を表します。
WordprocessingML ドキュメント内の個々の<p>
要素を操作するには、Paragraph オブジェクトを使用します。
ParagraphProperties クラス
WordprocessingML では、段落のプロパティは、要素 <pPr>
段落プロパティを使用して指定されます。
段落のプロパティには、配置、罫線、ハイフネーションの無効化、インデント、行間、網かけ、テキストの方向、段落内での改ページ処理などがあります。 OXML SDK ParagraphProperties クラスは、 <pPr>
要素を表します。
Run クラス
通常、ワープロ ドキュメントの段落にはテキストが含まれます。 WordprocessingML ドキュメントの OXML ファイル形式スキーマでは、テキストの領域を区切るために実行 <r>
要素が提供されます。 OXML SDK Run クラスは、 <r>
要素を表します。
テキスト オブジェクト
<r>
要素では、テキスト <t>
要素は、ドキュメント コンテンツを構成するテキストのコンテナーです。 OXML SDK Text クラスは、 <t>
要素を表します。
Open XML SDK コード例
次のコードは、Open XML SDKParagraph オブジェクトをインスタンス化し、それを使用して WordprocessingML ドキュメントにテキストを追加します。
// <Snippet0>
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System;
static void WriteToWordDoc(string filepath, string txt)
{
// Open a WordprocessingDocument for editing using the filepath.
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(filepath, true))
{
if (wordprocessingDocument is null)
{
throw new ArgumentNullException(nameof(wordprocessingDocument));
}
// Assign a reference to the existing document body.
MainDocumentPart mainDocumentPart = wordprocessingDocument.MainDocumentPart ?? wordprocessingDocument.AddMainDocumentPart();
mainDocumentPart.Document ??= new Document();
Body body = mainDocumentPart.Document.Body ?? mainDocumentPart.Document.AppendChild(new Body());
// Add a paragraph with some text.
Paragraph para = body.AppendChild(new Paragraph());
Run run = para.AppendChild(new Run());
run.AppendChild(new Text(txt));
}
}
// </Snippet0>
WriteToWordDoc(args[0], args[1]);