python-word生成



```python
from pathlib import Path

# 特定のフォルダのパスを指定
folder_path = 'output'  # ここにフォルダのパスを入力してください

# Pathオブジェクトを作成
folder = Path(folder_path)

# フォルダ内のすべてのファイル名を取得
file_names = [file.name for file in folder.iterdir() if file.is_file()]
6
# ファイル名のリストを表示
print(file_names)

```


横向き
```
def change_orientation2():
    current_section = doc.sections[-1]
    new_width, new_height = current_section.page_height, current_section.page_width
    current_section.orientation = WD_ORIENT.LANDSCAPE
    current_section.page_width = new_width
    current_section.page_height = new_height

    return new_section


```



```python

import docx
from docx.enum.section import WD_ORIENT



# Documentオブジェクトを作成
doc = docx.Document()


# ヘッダーとフッターの設定-----------------------------------------------------------------------------------

'''
section = doc.sections[0]
# ヘッダーを追加
header = section.header
header_paragraph = header.add_paragraph('This is the header')
header_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER  # ヘッダーの中央揃え

# フッターを追加
footer = section.footer
footer_paragraph = footer.add_paragraph('This is the footer')
footer_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.RIGHT  # フッターの右揃え
'''

# ------------------------------------------------------

# セクションを取得（デフォルトでは1セクションしかない）
section = doc.sections[0]

# フッターを取得
footer = section.footer

# ページ幅に合わせてテーブルの幅を設定
page_width = Inches(6.5)  # ドキュメントのページ幅に合わせる（例: 6.5インチ）

# フッター内にテーブルを作成（2列1行のテーブル）
table = footer.add_table(rows=1, cols=3, width=page_width)
table.autofit = True  # テーブルのサイズを内容に合わせて自動調整

# セルの高さを設定
for cell in table._cells:
    cell.height = Inches(0.5)  # セルの高さを0.5インチに設定

# 左側のセルにテキストを追加
left_cell = table.cell(0, 0)
left_paragraph = left_cell.add_paragraph('左側の文字')
# left_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.LEFT
left_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER  # セル内で中央揃え




# 右側のセルにテキストを追加
right_cell = table.cell(0, 2)
right_paragraph = right_cell.add_paragraph('右側の文字')
right_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.RIGHT


# テーブルの罫線を非表示にする（オプション）
for cell in table._cells:
    cell._element.get_or_add_tcPr().append(docx.oxml.OxmlElement('w:tblBorders'))





# 1ページ目-----------------------------------------------------------------------------------



# 2ページ目(文章の練習)-----------------------------------------------------------------------------
# タイトルを追加
doc.add_heading('1. 要旨', level=1)
# パラグラフ(本文)を追加
doc.add_paragraph('Hello, this is a paragraph.')
# タイトルを追加
doc.add_heading('Section2-1', level=2)
# 別のパラグラフを追加
doc.add_paragraph('This is another paragraph.')

# 箇条書きリストを追加
doc.add_heading('箇条書きリスト', level=2)
doc.add_paragraph('Item 1', style='ListBullet')  # スタイル名を指定
doc.add_paragraph('Item 2', style='ListBullet')  # スタイル名を指定
doc.add_paragraph('Item 3', style='ListBullet')  # スタイル名を指定

# 番号付きリストを追加
doc.add_heading('番号付きリスト', level=2)
doc.add_paragraph('Item 1', style='ListNumber')  # スタイル名を指定
doc.add_paragraph('Item 2', style='ListNumber')  # スタイル名を指定
doc.add_paragraph('Item 3', style='ListNumber')  # スタイル名を指定



# 改ページ
doc.add_page_break()



# 3ページ目(画像の練習)-----------------------------------------------------------------------------
# タイトルを追加
doc.add_heading('2. 結果', level=1)
# 画像の追加(runがないので、別々の段落)
doc.add_picture('output/acc1.png', width=docx.shared.Inches(3))  # 幅を3インチに設定して画像を追加
doc.add_picture('output/acc2.png', width=docx.shared.Inches(3))
doc.add_picture('output/acc3.png', width=docx.shared.Inches(3))

paragraph = doc.add_paragraph()
run = paragraph.add_run() # runを使うことでおなじ段落内に画像を追加
run.add_picture('output/acc1.png', width=docx.shared.Inches(3))
run.add_picture('output/acc2.png', width=docx.shared.Inches(3))
run.add_picture('output/acc3.png', width=docx.shared.Inches(3))

# 改ページ
doc.add_page_break()  # 改ページを挿入



# 4ページ目を挿入(テーブルの練習)-----------------------------------------------------------------------------
# タイトルを追加
doc.add_heading('3. 引用文書一覧', level=1)

# テーブルを作成
table3_1 = doc.add_table(rows=4, cols=3)
table3_1.style = doc.styles['Light List Accent 3']

# ヘッダーセルを追加
header_cells = table3_1.rows[0].cells
header_cells[0].text = 'Header 1'
header_cells[1].text = 'Header 2'
header_cells[2].text = 'Header 3'

# 残りのセルにデータを追加
table3_1.cell(1, 0).text = "Row 1, Cell 1"
table3_1.cell(1, 1).text = "Row 1, Cell 2"
table3_1.cell(1, 2).text = "Row 1, Cell 3"

table3_1.cell(2, 0).text = "Row 2, Cell 1"
table3_1.cell(2, 1).text = "Row 2, Cell 2"
table3_1.cell(2, 2).text = "Row 2, Cell 3"

table3_1.cell(3, 0).text = "Row 3, Cell 1"
table3_1.cell(3, 1).text = "Row 3, Cell 2"
table3_1.cell(3, 2).text = "Row 3, Cell 3"




# 5ページ目-----------------------------------------------------------------------------
# runの練習
# runは"フォントなどの特定のフォーマットが適用される文字列群"
# 以下の例では同じパラグラフ内にあるそれぞれのrunが別のフォーマットを持っている
paragraph5 = doc.add_paragraph()
run1 = paragraph5.add_run('This is ')
run2 = paragraph5.add_run('bold').bold = True
run3 = paragraph5.add_run(' and this is ')
run4 = paragraph5.add_run('italic').italic = True
# 改ページ
# doc.add_page_break()
doc.add_section() # セクション区切りを追加する




# 6ページ目(ここだけ横向きのページを挿入)-----------------------------------------------------------------------------
change_orientation2()
doc.add_paragraph("横向きのページを追加1")


doc.add_section()
change_orientation2()

# 7ページ目-----------------------------------------------------------------------------
records = (
    (1, '太郎', 160),
    (2, '次郎', 155),
    (3, '花子', 155)
)
table = doc.add_table(rows=1, cols=3)
table.style = doc.styles['Light List Accent 3']
header_cells = table.rows[0].cells
header_cells[0].text = 'no'
header_cells[1].text = '名前'
header_cells[2].text = '身長'
for no, name, height in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(no)
    row_cells[1].text = name
    row_cells[2].text = str(height)


# ファイルを保存
doc.save('output/new_document.docx')

```