Python | ExcelシートをそのままPDFに変換する方法

(^ω^)PythonでExcelシートをそのままPDFに変換してえ…

仕事でPythonを用いてExcelシートのPDF変換をシステム化しようと思ったのですが、
さっぱり/(^o^)\

普通のWindowsだったらExcelのエクスポート > PDFの作成
で一発で変換できるのですが、
AWS Linux2上でPythonだとどうやるのか全く分からず/(^o^)\

少し調べてみたので、記事にまとめてました。

環境・条件

AWS Linux 2上でPythonを使ってPDF変換を目指します。

変換方法

ExcelをPDFに変換する方法は、大きく分けて2種類あります。

方法1: openpyxlとnumpyを使用する

Pythonのライブラリであるopenpyxlとnumpyを利用してExcelシートのデータを処理し、PDFに出力する方法です。

  1. Python環境にopenpyxlとnumpyをインストールする。
  2. Excelファイルを読み込み、必要なデータ処理を行う。
  3. 処理したデータをPDF形式で出力する。

この方法だとPythonのライブラリだけ完結しますが、シートをそのままPDFに変換するのは少し厳しいみたいです。
簡単なグラフなどをPDFにするには向いてる模様。

方法2: サードパーティーのパッケージを利用する

どうやらLibreOfficeやunoconvのパッケージを利用すると変換できるみたいです。

LibreOffice

LibreOfficeは無料のオフィススイートで、AWS Amazon Linux 2でも利用可能です。

  1. AWS Amazon Linux 2環境でEPELリポジトリを有効にする。
  2. LibreOfficeをインストールする。
  3. コマンドラインからLibreOfficeを使用してExcelファイルをPDFに変換する。

以下のようなコードで変換できます。

import subprocess

def convert_to_pdf(input_file, output_file):
    try:
        subprocess.run(["libreoffice", "--headless", "--convert-to", "pdf", "--outdir", output_file, input_file], check=True)
        print(f"変換完了: '{input_file}' -> '{output_file}'")
    except subprocess.CalledProcessError as e:
        print(f"エラーが発生しました: {e}")

convert_to_pdf("path/to/your/excel-file.xlsx", "path/to/output/directory")

unoconv

unoconvはLibreOfficeの機能を利用してファイル変換を行うコマンドラインツールです。
特にAWS Amazon Linux 2のようなサーバー環境や自動化スクリプトで役立ちます。

  1. AWS Amazon Linux 2環境でEPELリポジトリを有効にする。
  2. unoconvとLibreOfficeをインストールする。
  3. Pythonスクリプトを使用してunoconvを実行する。

LibreOfficeと同じようなコードで変換できます。

import subprocess

def convert_excel_to_pdf(file_path):
    subprocess.run(["unoconv", "-f", "pdf", file_path])

convert_excel_to_pdf("path/to/your/excel-file.xlsx")

LibreOfficeとunconvの比較

LibreOfficeはGUIでの利用が可能というメリットがありますが

今回のようなCUIでの利用の場合、単純なスクリプトや自動化に向いている
unoconv が適しているようです。

補足: EPELリポジトリとは

EPELはExtra Packages for Enterprise Linuxの略だそうです。

このリポジトリは、Fedoraプロジェクトが提供する、Red Hat Enterprise Linux(RHEL)とその派生版(CentOS、Amazon Linuxなど)用の高品質な追加パッケージのコレクションです。

これにより、標準のリポジトリにはないプログラムやツールを利用できるようになります。

まとめ

Pythonの標準ライブラリだけではExcelシートをそのままPDFに変換することは困難であるため、
unconvといったサードパーティーのパッケージを利用するのがよさそうです。

コメント

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