Python で PDF テーブルをデータソースと統合する方法

データフレームから PDF を作成

ザの create_pdf_from_dataframe 関数は新しい PDF を作成し、パンダのデータフレームから生成されたテーブルを挿入します。この方法は、データがすでに表形式で存在するレポートワークフローに役立ちます。

この関数は以下のステップを実行します。

  1. で空の PDF ドキュメントを作成 ap.Document().
  2. 文書にページを追加します。
  3. を呼び出して、データフレームを Aspose.PDF テーブルに変換します create_table_from_dataframe(df, max_rows).
  4. を使用してテーブルをページに追加します page.paragraphs.add(table).
  5. PDF を出力パスに保存します。
from os import path
import sys

import pandas as pd
import aspose.pdf as ap
from config import set_license, initialize_data_dir

def create_pdf_from_dataframe(
    outfile: str, df: pd.DataFrame, max_rows: int = 20
) -> None:
    # Create new PDF document
    document = ap.Document()
    page = document.pages.add()

    table = create_table_from_dataframe(df, max_rows)

    # Add table object to first page of input document
    page.paragraphs.add(table)
    document.save(outfile)

データフレームからテーブルを作成

ザの create_table_from_dataframe 関数はデータフレームを Aspose.PDF に変換します Table どのページにも追加できるオブジェクト。

次のことを行います。

  1. 空欄を作成 ap.Table() インスタンス。
  2. 表とセルの境界線を設定すると、書式の一貫性が保たれます。
  3. DataFrame 列名を使用してヘッダー行を追加します。
  4. からデータ行を追加 df.head(max_rows).
  5. 入力されたテーブルオブジェクトを返します。
from os import path
import sys

import pandas as pd
import aspose.pdf as ap
from config import set_license, initialize_data_dir

def create_table_from_dataframe(df: pd.DataFrame, max_rows: int = 20) -> ap.Table:
    """Create an Aspose.PDF table from a pandas DataFrame."""
    # Initializes a new instance of the Table
    table = ap.Table()
    # Set the table border color as LightGray
    table.border = ap.BorderInfo(ap.BorderSide.ALL, 1, ap.Color.light_gray)
    # Set the border for table cells
    table.default_cell_border = ap.BorderInfo(
        ap.BorderSide.BOTTOM, 1, ap.Color.light_gray
    )

    # Add header row with column names
    header_row = table.rows.add()
    header_row.is_row_broken = False  # Prevent header row from being split across pages
    for column_name in df.columns:
        cell = header_row.cells.add(str(column_name))
        cell.background_color = ap.Color.light_gray

    # Add data rows
    for row_data in df.head(max_rows).itertuples(index=False):
        row = table.rows.add()
        for value in row_data:
            row.cells.add(str(value))

    return table

関連テーブルトピック