テーブルは、Word文書で一般的に使用され、情報をグリッドのような構造に編成します。これらを使用すると、情報を行と列の形式で要約できます。この記事では、Pythonを使用してプログラムでWord文書にテーブルを作成する方法を学習します。さらに、この記事では、ネストされたテーブルを作成する方法、またはWord文書で既存のテーブルのクローンを作成する方法について説明します。
Wordドキュメントにテーブルを作成するPythonライブラリ
Word文書のテーブルを操作するには、Aspose.Words for Pythonを使用します。このライブラリは、Pythonアプリケーション内から動的にWordドキュメントを作成および操作するように設計されています。次のpipコマンドを使用して、PyPIからライブラリをインストールできます。
pip install aspose-words
PythonでWord文書にテーブルを作成する
以下は、Pythonを使用してWordDOCXドキュメントにテーブルを作成する手順です。
- Documentクラスのオブジェクトを作成します。
- DocumentBuilderクラスのオブジェクトを作成します。
- DocumentBuilder.starttable()メソッドを使用してテーブルを開始し、オブジェクト内のテーブルの参照を取得します。
- DocumentBuilder.insertcell()メソッドを使用してセルを挿入します。
- DocumentBuilder.cellformatプロパティを使用してセルのフォーマットを設定します。
- autofit(aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS)メソッドを使用して自動フィットを設定します。
- セルの配置を設定します。
- DocumentBuilder.write()メソッドを使用してセルにテキストを挿入します。
- 必要に応じて、セルとテキストをセルに繰り返し挿入します。
- セルの挿入が完了したら、行を終了します。
- すべての行を挿入したら、テーブルを終了します。
- Document.save()メソッドを使用してWord文書を保存します。
次のコードサンプルは、Pythonを使用してDOCXドキュメントにテーブルを作成する方法を示しています。
import aspose.words as aw
# Create a new Word document.
doc = aw.Document()
# Create document builder.
builder = aw.DocumentBuilder(doc)
# Start the table.
table = builder.start_table()
# Insert cell.
builder.insert_cell()
# Table wide formatting must be applied after at least one row is present in the table.
table.left_indent = 20.0
# Set height and define the height rule for the header row.
builder.row_format.height = 40.0
builder.row_format.height_rule = aw.HeightRule.AT_LEAST
# Set alignment and font settings.
builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
builder.font.size = 16
builder.font.name = "Arial"
builder.font.bold = True
builder.cell_format.width = 100.0
builder.write("Header Row,\n Cell 1")
# We don't need to specify this cell's width because it's inherited from the previous cell.
builder.insert_cell()
builder.write("Header Row,\n Cell 2")
builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Header Row,\n Cell 3")
builder.end_row()
builder.cell_format.width = 100.0
builder.cell_format.vertical_alignment = aw.tables.CellVerticalAlignment.CENTER
# Reset height and define a different height rule for table body.
builder.row_format.height = 30.0
builder.row_format.height_rule = aw.HeightRule.AUTO
builder.insert_cell()
# Reset font formatting.
builder.font.size = 12
builder.font.bold = False
builder.write("Row 1, Cell 1 Content")
builder.insert_cell()
builder.write("Row 1, Cell 2 Content")
builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 1, Cell 3 Content")
builder.end_row()
builder.insert_cell()
builder.cell_format.width = 100.0
builder.write("Row 2, Cell 1 Content")
builder.insert_cell()
builder.write("Row 2, Cell 2 Content")
builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 2, Cell 3 Content.")
builder.end_row()
# End table.
builder.end_table()
# Save the document.
doc.save("table_formatted.docx")
以下は、上記のコードサンプルを使用して作成したテーブルのスクリーンショットです。
PythonでWord文書にネストされたテーブルを作成する
Aspose.Words for Pythonを使用すると、ネストされたテーブルをシームレスに作成することもできます。つまり、テーブルのセル内に新しいテーブルを作成できます。以下は、WordDOCXファイルにネストされたテーブルを作成する手順です。
- Documentクラスのオブジェクトを作成します。
- DocumentBuilderクラスのオブジェクトを作成します。
- DocumentBuilder.starttable()メソッドを使用してテーブルを開始し、オブジェクト内のテーブルの参照を取得します。
- DocumentBuilder.insertcell()メソッドを使用してセルを挿入し、オブジェクト内のセルの参照を取得します。
- DocumentBuilder.write()メソッドを使用してセルにテキストを挿入します。
- 必要に応じて、セルとテキストをセルに繰り返し挿入します。
- すべての行を挿入したら、テーブルを終了します。
- DocumentBuilder.moveto(Cell.firstparagraph)メソッドを使用して、目的のセル内にコントロールを移動します。
- セルを挿入して別のテーブルを作成し、完了したらテーブルを終了します。
- Document.save()メソッドを使用してWord文書を保存します。
次のコードサンプルは、Pythonを使用してDOCXドキュメントにネストされたテーブルを作成する方法を示しています。
import aspose.words as aw
# Create a new Word document.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Insert cell.
cell = builder.insert_cell()
builder.writeln("Outer Table Cell 1")
builder.insert_cell()
builder.writeln("Outer Table Cell 2")
# This call is important to create a nested table within the first table.
# Without this call, the cells inserted below will be appended to the outer table.
builder.end_table()
# Move to the first cell of the outer table.
builder.move_to(cell.first_paragraph)
# Build the inner table.
builder.insert_cell()
builder.writeln("Inner Table Cell 1")
builder.insert_cell()
builder.writeln("Inner Table Cell 2")
builder.end_table()
# Save the document.
doc.save("table_nested.docx")
以下は、上記のコードサンプルの出力です。
PythonでWord文書の既存のテーブルのクローンを作成する
Word文書の既存のテーブルのクローンを作成することもできます。この操作を実行する手順は次のとおりです。
- Documentクラスを使用してドキュメントをロードします。
- Document.getchild(NodeType.TABLE, int, boolean).astable()メソッドを使用して、オブジェクト内のテーブルの参照を取得します。
- テーブルのオブジェクトを使用してclone(True).astable()メソッドを呼び出し、別のオブジェクトで複製されたテーブルの参照を取得します。
- Table.parentnode.insertafter()メソッドを使用して複製されたテーブルを挿入します。
- Table.parentnode.insertafter(Paragraph(Document), Table)メソッドを使用して、テーブル間に空の段落を挿入します。
- Document.save()メソッドを使用してWord文書を保存します。
次のコードサンプルは、Pythonを使用してWordDOCXドキュメントのテーブルを複製する方法を示しています。
import aspose.words as aw
# Load the Word document.
doc = aw.Document("table_formatted.docx")
# Get reference of the desired table.
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()
# Clone the table and insert it into the document after the original table.
tableClone = table.clone(True).as_table()
table.parent_node.insert_after(tableClone, table)
# Insert an empty paragraph between the two tables,
# or else they will be combined into one upon saving.
table.parent_node.insert_after(aw.Paragraph(doc), table)
# Save the document.
doc.save("table_clone.docx")
次のスクリーンショットは、Word文書の複製されたテーブルを示しています。
無料のAPIライセンスを取得する
一時ライセンスを取得して、評価の制限なしにAspose.Words for Pythonを使用できます。
結論
この記事では、Pythonを使用してWord文書にテーブルを作成する方法を学びました。さらに、ネストされたテーブルを作成する方法や、Word文書内の既存のテーブルを動的に複製する方法を見てきました。さらに、Aspose.Words for Pythonのドキュメントにアクセスして、他の機能を調べることができます。ご不明な点がございましたら、フォーラムからお気軽にお問い合わせください。
関連項目
- Pythonを使用してMSWordドキュメントを作成する
- Pythonを使用してWord文書をHTMLに変換する
- PythonでWord文書をPNG、JPEG、またはBMPに変換する
- Pythonを使用してマークダウンするWord文書
- Pythonで2つのWord文書を比較する
情報:PowerPointプレゼンテーションからWord文書を取得する必要がある場合は、AsposeプレゼンテーションからWord文書コンバーターを使用できます。