リストの操作

Microsoft Word ドキュメント内のリストは、段落書式設定プロパティのセットです。リストを文書内で使用して、テキストを構造化し、配置し、強調表示することができます。リストは、読者が重要なポイントを理解しやすくする方法で文書内のデータを整理するための優れた方法です。

各リストには最大 9 レベルを含めることができ、数値スタイル、開始値、インデント、タブ位置などの書式設定プロパティはレベルごとに個別に定義されます。

Aspose.Words では、リストの操作は Lists 名前空間によって表されます。ただし、List オブジェクトは常に ListCollection に属します。

この記事では、Aspose.Words を使用してプログラムでリストを操作する方法について説明します。

リストの書式設定を適用してリストを作成する

Aspose.Words を使用すると、リストの書式設定を適用してリストを簡単に作成できます。 DocumentBuilder は、ListFormat オブジェクトを返す ListFormat プロパティを提供します。このオブジェクトには、リストを開始および終了したり、インデントを増減したりするためのメソッドがいくつかあります。 Microsoft Word には、箇条書きと番号付きの 2 つの一般的なタイプのリストがあります。

箇条書きまたは番号と書式設定は、RemoveNumbers が呼び出されて箇条書きリストの書式設定が停止されるまで、現在の段落と、DocumentBuilder を使用して作成された以降のすべての段落に追加されます。

Word 文書では、リストは最大 9 レベルで構成されます。各レベルのリストの書式設定では、使用する箇条書きや番号、左インデント、箇条書きとテキストの間のスペースなどを指定します。次のメソッドはリスト レベルを変更し、新しいレベルの書式設定プロパティを適用します。

  • 現在の段落のリスト レベルを 1 レベル上げるには、ListIndent を呼び出します。
  • 現在の段落のリスト レベルを 1 レベル下げるには、ListOutdent を呼び出します。

ListLevelNumber プロパティを使用して、段落のリスト レベルを取得または設定することもできます。

次のコード例は、複数レベルのリストを作成する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Item 1");
builder.Writeln("Item 2");
builder.ListFormat.ListIndent();
builder.Writeln("Item 2.1");
builder.Writeln("Item 2.2");
builder.ListFormat.ListIndent();
builder.Writeln("Item 2.2.1");
builder.Writeln("Item 2.2.2");
builder.ListFormat.ListOutdent();
builder.Writeln("Item 2.3");
builder.ListFormat.ListOutdent();
builder.Writeln("Item 3");
builder.ListFormat.RemoveNumbers();
dataDir = dataDir + "DocumentBuilderSetMultilevelListFormatting_out.doc";
doc.Save(dataDir);

リストレベルの書式設定の指定

リストレベルのオブジェクトは、リストの作成時に自動的に作成されます。 ListLevel クラスのプロパティとメソッドを使用して、リストの個々のレベルの書式設定を制御します。

各セクションの再開リスト

IsRestartAtEachSection プロパティを使用して、セクションごとにリストを再開できます。このオプションは、RTF、DOC、および DOCX ドキュメント形式でのみサポートされていることに注意してください。このオプションは、OoxmlCompliance が Ecma376 より高い場合にのみ DOCX に書き込まれます。

次のコード例は、リストを作成してセクションごとに再起動する方法を示しています。

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
doc.Lists.Add(ListTemplate.NumberDefault);
List list = doc.Lists[0];
// Set true to specify that the list has to be restarted at each section.
list.IsRestartAtEachSection = true;
DocumentBuilder builder = new DocumentBuilder(doc);
builder.ListFormat.List = list;
for (int i = 1; i < 45; i++)
{
builder.Writeln(String.Format("List Item {0}", i));
// Insert section break.
if (i == 15)
builder.InsertBreak(BreakType.SectionBreakNewPage);
}
// IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.Ecma376
OoxmlSaveOptions options = new OoxmlSaveOptions();
options.Compliance = OoxmlCompliance.Iso29500_2008_Transitional;
dataDir = dataDir + "RestartAtEachSection_out.docx";
// Save the document to disk.
doc.Save(dataDir, options);