【Day 23】Pythonで表付きPDFレポートを作成しよう!

Pythonで表付きPDFレポートを作成しよう! 未分類

前回までに、PythonでAI文章+グラフ付きのPDFレポートを作成しました。
今回はさらに進めて、データを表形式でPDFに挿入する方法をご紹介します。
ビジネスや報告書でよく使う「売上一覧」や「分析テーブル」などを自動出力できるようになります。

📦 必要なライブラリ

pip install fpdf2

📊 表データ付きPDF作成コード(Python)


from fpdf import FPDF
import datetime

# ダミーデータ(売上一覧)
headers = ["月", "売上(万円)", "利益率"]
data = [
    ["1月", "120", "30%"],
    ["2月", "150", "32%"],
    ["3月", "180", "35%"],
    ["4月", "220", "37%"],
]

# PDF初期化
pdf = FPDF()
pdf.add_page()
pdf.add_font("Arial", '', 'arial.ttf', uni=True)  # 日本語フォント設定(必要に応じて変更)
pdf.set_font("Arial", size=12)

# タイトル
pdf.cell(200, 10, txt="【売上レポート】表形式データ", ln=True, align='L')

# 表の描画
line_height = 10
col_widths = [40, 50, 40]

# ヘッダー
pdf.set_fill_color(200, 200, 200)
for i, header in enumerate(headers):
    pdf.cell(col_widths[i], line_height, header, border=1, fill=True)
pdf.ln(line_height)

# データ
for row in data:
    for i, item in enumerate(row):
        pdf.cell(col_widths[i], line_height, item, border=1)
    pdf.ln(line_height)

# 保存
filename = f"report_table_{datetime.date.today()}.pdf"
pdf.output(filename)
print(f"✅ PDFレポート生成完了: {filename}")

📌 ポイント解説

  • cell()関数で1セルずつ描画し、ln()で行を切り替え
  • border=1で表の枠線を表示
  • 文字数や列の長さによって col_widths を調整可能

⚠️ 注意点

  • 長い文字列は multi_cell() を使うと折り返せる
  • 行数が多い場合はページの高さをチェックして自動改ページ対応を検討
  • 日本語使用時はUTF-8対応フォントが必要(fpdf2の最新機能を活用)

✅ まとめ

  • PDF内に表データを整然と配置できる
  • 報告資料や定期レポートで視認性が向上
  • グラフ・文章・表が揃った完全自動レポートが可能に

▶️ 次回予告

Day24では、複数PDFページに自動で内容を分割・構成する方法を学びます。
長いレポートやプレゼン資料の分割にも対応できるようになります!

コメント

タイトルとURLをコピーしました