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
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')