リストの操作
Microsoft Wordドキュメント内のリストは、リストの書式設定プロパティのセットです。 リストは、書式設定、配置、およびテキストを強調するためにあなたの文書で使用することができます。 リストは、ドキュメント内のデータを整理するための優れた方法であり、読者が重要なポイントを理解しやすくします。
各リストには最大9つのレベルがあり、数値スタイル、開始値、インデント、タブ位置などの書式設定プロパティは、レベルごとに個別に定義されます。
この記事では、Aspose.Wordsを使用してリストをプログラムで操作する方法について説明します。
リストの書式設定を適用してリストを作成する
Aspose.Wordsリストの書式設定を適用することで、リストを簡単に作成できます。 DocumentBuilderはListFormatオブジェクトを返すListFormatプロパティを提供します。 このオブジェクトには、リストの開始と終了、およびインデントの増減を行ういくつかのメソッドがあります。 Microsoft Wordには、箇条書きと番号付きの2つの一般的なタイプのリストがあります:
- 箇条書きリストを開始するには、ListFormat.ApplyBulletDefaultを呼び出します
- 番号付きリストを開始するには、ListFormat.ApplyNumberDefaultを呼び出します
箇条書きまたは番号と書式設定が現在の段落に追加され、RemoveNumbersまでDocumentBuilderを使用して作成されたすべての段落が呼び出されて箇条書きリストの書式設定
Word文書では、リストは最大9つのレベルで構成されています。 各レベルのリストの書式設定は、使用される箇条書きまたは番号、左インデント、箇条書きとテキストの間のスペースなどを指定します。 次のメソッドは、リストレベルを変更し、新しいレベルの書式設定プロパティを適用します:
- 現在の段落のリストレベルを1レベル上げるには、ListFormat.ListIndentを呼び出します
- 現在の段落のリストレベルを1レベル下げるには、ListFormat.ListOutdentを呼び出します
これらのメソッドは、リストレベルを変更し、新しいレベルの書式設定プロパティを適用します。
次のコード例は、マルチレベルリストを作成する方法を示しています:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(DocumentBuilderSetMultilevelListFormatting.class); | |
// Open the document. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.getListFormat().applyNumberDefault(); | |
builder.writeln("Item 1"); | |
builder.writeln("Item 2"); | |
builder.getListFormat().listIndent(); | |
builder.writeln("Item 2.1"); | |
builder.writeln("Item 2.2"); | |
builder.getListFormat().listIndent(); | |
builder.writeln("Item 2.1.1"); | |
builder.writeln("Item 2.2.2"); | |
builder.getListFormat().listOutdent(); | |
builder.writeln("Item 3"); | |
builder.getListFormat().removeNumbers(); | |
doc.save(dataDir + "output.doc"); |
リストレベルの書式設定の指定
リストレベルのオブジェクトは、リストの作成時に自動的に作成されます。 リストの個々のレベルの書式設定を制御するには、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-Java | |
Document doc = new Document(); | |
doc.getLists().add(ListTemplate.NUMBER_DEFAULT); | |
com.aspose.words.List list = doc.getLists().get(0); | |
// Set true to specify that the list has to be restarted at each section. | |
list.isRestartAtEachSection(true); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.getListFormat().setList(list); | |
for (int i = 1; i < 45; i++) { | |
builder.writeln(String.format("List Item " + i)); | |
// Insert section break. | |
if (i == 15) | |
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE); | |
} | |
builder.getListFormat().removeNumbers(); | |
// IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.Ecma376 | |
OoxmlSaveOptions options = new OoxmlSaveOptions(); | |
options.setCompliance(OoxmlCompliance.ISO_29500_2008_TRANSITIONAL); | |
dataDir = dataDir + "RestartAtEachSection_out.docx"; | |
// Save the document to disk. | |
doc.save(dataDir, options); |