converter.xlsx2pdf のソースコード

"""
ExcelファイルをPDFに変換するモジュールです。

このモジュールは、指定されたExcel (.xlsxまたは.xls) ファイルをPDF形式に変換します。
Windows環境でMicrosoft Excelアプリケーションがインストールされている必要があります。
`comtypes` ライブラリを使用してExcelアプリケーションをCOMインターフェース経由で操作します。

関連リンク: :doc:`xlsx2pdf_usage`
"""
import os

try:
    import comtypes.client
except Exception:
    print("\nxlsx2pdf.py: Import error: comtypes.client")
    input("Install: pip install comtypes\n")


[ドキュメント] def xlsx_to_pdf(input_path, output_path=None): """ 指定されたExcelファイルをPDF形式に変換します。 この関数は、Microsoft ExcelアプリケーションのCOMインターフェースを介してExcelファイルをPDFに変換します。 変換はExcelの `ExportAsFixedFormat` 機能を利用して行われます。 変換プロセス中にExcelアプリケーションは非表示で実行され、完了後に終了されます。 Windows環境でMicrosoft Excelがインストールされている必要があります。 :param input_path: str: 変換するExcelファイルのフルパス。例: "C:\\path\\to\\document.xlsx" :param output_path: str, optional: 出力するPDFファイルのフルパス。 Noneの場合、入力ファイルと同じディレクトリに拡張子を.pdfとしたファイル名で出力されます。 例: "C:\\path\\to\\document.pdf" :returns: str or None: PDFファイルの出力パス。変換に成功した場合は出力パスを返し、失敗した場合はNoneを返します。 """ excel = comtypes.client.CreateObject("Excel.Application") excel.Visible = 0 excel.DisplayAlerts = 0 xlTypePDF = 0 input_path = os.path.abspath(input_path) if output_path is None: output_path = os.path.splitext(input_path)[0] + ".pdf" else: output_path = os.path.abspath(output_path) print(f" Converting '{os.path.basename(input_path)}' to PDF...") workbook = None try: workbook = excel.Workbooks.Open(input_path, ReadOnly=True) workbook.ExportAsFixedFormat(xlTypePDF, output_path) workbook.Close(False) print(f" Successfully converted to PDF: '{output_path}'") return output_path except Exception as e: print(f" Error converting '{input_path}' to PDF: {e}") if workbook is not None: try: workbook.Close(False) except Exception: pass return None finally: excel.Quit()
if __name__ == "__main__": import sys input_path = sys.argv[1] if len(sys.argv) > 1 else None output_path = sys.argv[2] if len(sys.argv) > 2 else None if not input_path: print("Usage: python xlsx2pdf.py input.xlsx [output.pdf]") input("\nPress ENTER to terminate>>\n") raise SystemExit(1) xlsx_to_pdf(input_path, output_path) print("\nProgram execution completed.") input("\nPress ENTER to terminate>>\n")