0
2

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でPDFをExcelファイルに変換する方法

Posted at

PDFドキュメントをExcelファイルに変換することで、静的な形式に制限されていたデータの潜在力を解放し、その後のデータ分析、共有、およびレポート生成などの作業効率が大幅に向上します。変換されたExcelシートでは、データの操作がより柔軟になり、迅速なフィルタリング、計算、グラフ作成などの機能がサポートされ、手動入力や整理に多大な時間がかかる可能性がある情報が簡単に管理・活用できるようになります。この記事では、Pythonを使用してPDFドキュメントをExcelファイルに変換し、効率的にデータを活用する方法を紹介します。



この記事で使用する方法には、Spire.PDF for Pythonが必要です。PyPI:pip install spire.pdf

無料ライセンスの申請

PDFドキュメントを直接Excelファイルに変換する

ライブラリで提供されているPdfDocument.LoadFromFile()メソッドを使用してPDFドキュメントを読み込み、PdfDocument.SaveFromFile(string filename, FileFormat.XLSX)メソッドを使用してドキュメントをExcelファイルに変換できます。また、XlsxLineLayoutOptionsを使用して変換オプションを設定することも可能です。以下はパラメータ情報です:

パラメータ 説明
convertToMultipleSheet (bool) 各ページを異なるワークシートに変換する;Falseの場合は最初のページのみ変換
rotatedText (bool) 回転したテキストを表示する
splitCell (bool) PDFの複数行テキストを複数のセルに分割する
wrapText (bool) セル内のテキストを自動で折り返す
overlapText (bool) 重なったテキストを表示する

以下は操作手順の詳細です:

  1. 必要なモジュールをインポートします。
  2. PdfDocumentオブジェクトを作成し、PdfDocument.LoadFromFile()メソッドでPDFドキュメントを読み込みます。
  3. XlsxLineLayoutOptionsオブジェクトを作成し、変換オプションを指定します。
  4. PdfDocument.ConvertOptions.SetPdfToXlsxOptions()メソッドを使用して変換オプションを適用します。
  5. PdfDocument.SaveFromFile(string filename, FileFormat.XLSX)メソッドを使用して、ドキュメントをExcelファイルに変換し、保存します。
  6. リソースを解放します。

コードサンプル

from spire.pdf import *

# PdfDocumentのインスタンスを作成
pdf = PdfDocument()

# PDFドキュメントをロード
pdf.LoadFromFile("Sample.pdf")

# XlsxLineLayoutOptionsのインスタンスを作成
options = XlsxLineLayoutOptions(True, False, False, True)

# 変換オプションを適用
pdf.ConvertOptions.SetPdfToXlsxOptions(options)

# PDFドキュメントをXLSXファイルに変換
pdf.SaveToFile("output/PDFToExcel.xlsx", FileFormat.XLSX)

# リソースを解放
pdf.Close()

変換結果
PDFドキュメントを直接Excelファイルに変換する

PDFの表データを抽出し、Excelワークシートに書き込む

より正確なデータ抽出を実現し、フォーマットの影響を排除したい場合は、PDFドキュメントからすべての表データを直接抽出してExcelワークシートに書き込むことも可能です。PdfTableExtractorクラスはPDFドキュメント内の表データを抽出するのに役立ち、Spire.XLS for Pythonを使用して、抽出されたデータをExcelワークシートに書き込むことができます。Spire.XLS for PythonはPyPIからインストール可能です:pip install spire.xls
以下は操作手順の詳細です:

  1. 必要なモジュールをインポートします。
  2. PdfDocumentオブジェクトを作成し、PdfDocument.LoadFromFile()メソッドを使用してPDFドキュメントを読み込みます。
  3. Workbookオブジェクトを作成し、Workbook.Worksheets.Clear()メソッドを使用して既定のワークシートをクリアします。
  4. 読み込んだPDFドキュメントに対してPdfTableExtractorオブジェクトを作成します。
  5. PdfTableExtractor.ExtractTable()メソッドを使用して、ドキュメント内の各ページの表を抽出します。
  6. 各表を反復処理します
    • Workbook.Worksheets.Add()メソッドを使用して、各表に対応するワークシートをブック内に追加します。
    • Table.GetText()メソッドを使用して、各行および列を反復処理し、セルの値を取得し、Worksheet.Range[].Textプロパティを使用して、対応する位置に挿入します。
    • セルの書式を設定します。
  7. Workbook.SaveToFile()メソッドを使用してブックを保存します。
  8. リソースを解放します。

コードサンプル

from spire.pdf import *
from spire.xls import *

# PdfDocumentオブジェクトを作成
pdf = PdfDocument()
# PDFドキュメントをロード
pdf.LoadFromFile("Sample.pdf")

# Workbookオブジェクトを作成
workbook = Workbook()
# デフォルトのワークシートをクリア
workbook.Worksheets.Clear()

# PdfTableExtractorオブジェクトを作成
extractor = PdfTableExtractor(pdf)

# 各PDFページからテーブルを抽出
for pageIndex in range(pdf.Pages.Count):
    tables = extractor.ExtractTable(pageIndex)
    # テーブルが複数ある場合に繰り返し処理
    if tables is not None:
        for tableIndex in range(len(tables)):
            # テーブルを取得
            table = tables[tableIndex]
            # テーブル用のワークシートを作成
            sheet = workbook.Worksheets.Add(f"Page{pageIndex + 1}-Table{tableIndex + 1}")
            # テーブルの行と列を繰り返し処理
            for rowIndex in range(table.GetRowCount()):
                for colIndex in range(table.GetColumnCount()):
                    # セルの値を取得
                    text = table.GetText(rowIndex, colIndex)
                    cellText = text.replace("\n", "")
                    # セルの値をワークシートの対応するセルに書き込む
                    sheet.Range[rowIndex + 1, colIndex + 1].Text = cellText
            # ヘッダー行のスタイルを設定
            sheet.Rows.get_Item(0).Style.Font.FontName = "Yu Gothic UI"
            sheet.Rows.get_Item(0).Style.Font.Size = 12
            sheet.Rows.get_Item(0).Style.Font.IsBold = True
            sheet.Rows.get_Item(0).Style.HorizontalAlignment = HorizontalAlignType.Center
            # データ行のスタイルを設定
            for i in range(1, sheet.Rows.Count):
                sheet.Rows.get_Item(i).Style.Font.FontName = "Yu Gothic UI"
                sheet.Rows.get_Item(i).Style.Font.Size = 12
                sheet.Rows.get_Item(i).Style.HorizontalAlignment = HorizontalAlignType.Left
            # 列を自動調整
            for j in range(1, sheet.Columns.Count):
                sheet.AutoFitColumn(j)

# ワークブックを保存
workbook.SaveToFile("output/PDFTableToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()
pdf.Close()

抽出結果
PDFの表データを抽出しExcelワークシートに書き込む

この記事では、Pythonを使用してPDFドキュメントをExcelファイルに変換する方法、およびPDFドキュメントから表データを抽出してExcelファイルに書き込む方法を紹介しました。
さらに詳しいPDF操作の技術については、Spire.PDF for Pythonのチュートリアルをご覧ください。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?