Excel ファイルをPDFに変換したい場面は、ビジネスや開発業務でよく発生します。帳票を共有するとき、編集不可の形で配布したいとき、あるいは印刷用のフォーマットを統一したいときなどです。Python にはこの処理を実現するライブラリがいくつか存在します。この記事では、そのひとつである Spire.XLS for Python を使った変換手順を、具体的なコード例とともに紹介します。
Spire.XLS for Python の概要
Spire.XLS for Python は、Python 環境から Excel ファイルを作成、編集、変換するための API を提供するライブラリです。主な機能は以下のとおりです。
- Excel ワークブックの新規作成や既存ファイルの読み込み
- セルの値や書式、数式の設定
- グラフや画像の追加
- PDF、画像、HTML など多様な形式への変換
- Windows、Linux、macOS での動作
このライブラリは無料版と有料版が提供されています。無料版では変換可能なページ数に制限があるため、使用前に公式ドキュメントで制限事項を確認することをお勧めします。
環境構築
Spire.XLS for Python は PyPI に公開されており、pip でインストールできます。
pip install Spire.XLS
インストール後、Python スクリプト内でインポートして使用します。
from spire.xls import Workbook
from spire.xls import FileFormat
基本的な変換手順
Excel から PDF への変換は、以下の流れで行います。
-
Workbookオブジェクトを作成し、既存ファイルを読み込む - 必要に応じてシートや印刷設定を調整する
-
SaveToFileメソッドで PDF として保存する - リソースを解放する
単純な変換
最もシンプルな変換コードは以下のとおりです。ワークシート全体をそのまま PDF に変換します。
from spire.xls import Workbook
from spire.xls import FileFormat
# Workbook オブジェクトの作成と Excel ファイルの読み込み
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
# PDF として保存
workbook.SaveToFile("output.pdf", FileFormat.PDF)
# リソース解放
workbook.Dispose()
このコードでは、カレントディレクトリにある sample.xlsx が output.pdf に変換されます。
特定のシートのみを PDF に変換する
ワークブック内の特定のワークシートだけを変換したい場合は、Worksheets コレクションから対象シートを取得し、個別に保存します。
from spire.xls import Workbook
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
# 最初のワークシートだけを PDF に変換
worksheet = workbook.Worksheets[0]
worksheet.SaveToPdf("sheet1_output.pdf")
workbook.Dispose()
ワークシート単位の変換には Worksheet.SaveToPdf メソッドを使用します。
ページ設定を調整した変換
PDF 出力時のレイアウトを制御するには、PageSetup オブジェクトを操作します。印刷の向きや用紙サイズ、拡大縮小率などを設定できます。
from spire.xls import Workbook
from spire.xls import PageOrientationType
from spire.xls import PaperSizeType
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
worksheet = workbook.Worksheets[0]
# ページ設定
page_setup = worksheet.PageSetup
page_setup.Orientation = PageOrientationType.Landscape # 横向き
page_setup.PaperSize = PaperSizeType.PaperA4 # A4 サイズ
page_setup.FitToPagesWide = 1 # 横方向を 1 ページに収める
page_setup.FitToPagesTall = 1 # 縦方向を 1 ページに収める
worksheet.SaveToPdf("adjusted_output.pdf")
workbook.Dispose()
このようにページ設定を行うことで、PDF 化の際に列の途切れや不要な空白ページの挿入を防ぎやすくなります。
変換時の注意点
Spire.XLS for Python で Excel を PDF に変換する際には、いくつか注意すべき点があります。
- フォントの埋め込み:変換にはフォント情報が必要です。実行環境に該当フォントがインストールされていない場合、文字化けやレイアウト崩れが発生する可能性があります。必要に応じてフォントをインストールしてください。
- 無料版の制限:無料版では変換可能なページ数に上限があります(バージョンにより異なります)。大量のページを含むファイルを変換する際は、事前に動作を確認することを推奨します。
- レンダリング精度:複雑なグラフや画像、オブジェクトを含むシートでは、PDF 化した際に元の表示と完全には一致しない場合があります。変換後は内容を確認し、必要に応じてページ設定やオブジェクト配置を調整してください。
-
メモリ管理:
Workbookオブジェクトは処理後にDispose()メソッドを呼び、リソースを解放することが推奨されています。
他の手段との比較
Python で Excel を PDF に変換する手段としては、openpyxl と win32com の組み合わせ、LibreOffice をコマンドラインで利用する方法、あるいは ReportLab で直接 PDF を生成する方法などがあります。Spire.XLS for Python を使用する場合の特徴としては、Microsoft Office や LibreOffice のインストールが不要であり、クロスプラットフォームで動作する点が挙げられます。一方で、無料版のページ数制限や、商用利用時にライセンスが必要となる点は、選択時に考慮する要素となります。
まとめ
Spire.XLS for Python を使用すると、Python スクリプトから Excel ファイルを PDF へ変換できます。基本的な API はシンプルで、ページ設定によるレイアウト制御も可能です。帳票の自動生成やドキュメントワークフローに組み込む際の選択肢のひとつとして検討できます。
実際のプロジェクトで使用する際は、無料版の制限や変換精度を事前にテストし、要件を満たしているかを確認することが重要です。また、処理終了時には Dispose() メソッドでリソースを適切に解放してください。