0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

python-word生成

Last updated at Posted at 2024-08-04
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')

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?