PythonでExcelファイルをPDFに変換し、簡単に共有や印刷

# Pythonで簡単にExcelファイルをPDFに変換し、表の共有や印刷を簡単にする

データ処理やレポート作成の作業では、さまざまなファイル形式の間で変換する必要があります。たとえば、Excelの表を使用してデータを収集、整理、分析し、それをPDFファイルに変換してデータを共有、表示、印刷などに使用する場合です。ただし、Excelの表とPDFファイルの変換は、特に大量の表をPDFファイルに変換する必要がある場合には手間がかかることがあります。幸いにも、Pythonは強力なプログラミング言語として、この目標を達成するための豊富なライブラリやツールを提供しています。Pythonを使用することで、Excelの表を自動的にPDFファイルに変換するスクリプトを作成することができます。
この記事では、**Pythonを使用してさまざまな形式のExcel表（xls、xlsxなど）をPDFファイルに変換する方法**について詳しく説明します。

- **[Excelワークブック全体を直接PDFファイルに変換する](#excelワークブック全体を直接pdfファイルに変換する)**
- **[Excelワークブック全体をPDFファイルに変換し、変換オプションを設定する](#excelワークブック全体をpdfファイルに変換し変換オプションを設定する)**
- **[指定されたワークシートをPDFファイルに変換する](#指定されたワークシートをpdfファイルに変換する)**

この記事で使用する方法には、[Spire.XLS for Python](https://www.e-iceblue.com/Introduce/xls-for-python.html)が必要です。公式ウェブサイトからダウンロードするか、PyPIを介してインストールできます：```pip install Spire.XLS```。

## Excelワークブック全体をPDFファイルに変換する
**Workbook** クラスはExcelワークブックファイルを表し、このクラスの **LoadFromFile(string filename, FileFormat)** メソッドを使用してワークブックをファイルから読み込むことができます。xls、xlsx、xlsb、xlsmなどの形式を含む。その後、**Workbook.SaveToFile(string filename, FileFormat.PDF)** メソッドを使用してExcelファイル全体をPDFファイルに保存できます。生成されたPDFファイルでは、Excelの各ワークシートが個別のページとして表示されます。以下は変換の例です：
1. ライブラリのインポート。
```python
from spire.xls import *
from spire.xls.common import *
```
2. Workbookクラスのオブジェクトを作成し、Excelファイルを読み込む。
```python
workbook = Workbook()
workbook.LoadFromFile("例.xlsx")
```
3. ExcelファイルをPDFファイルに保存し、Workbookを閉じる。
```python
workbook.SaveToFile("output/ExcelをPDFに変換.pdf", FileFormat.PDF)
workbook.Dispose()
```
**完全なコード：**
```python
from spire.xls import *
from spire.xls.common import *

# Workbookクラスのオブジェクトを作成し、Excelファイルをロードする
workbook = Workbook()
workbook.LoadFromFile("例.xlsx")

# ExcelファイルをPDFファイルに変換して保存する
workbook.SaveToFile("output/ExcelをPDFに変換.pdf", FileFormat.PDF)
workbook.Dispose()
```

**元のExcelワークブック：**
![2023-12-15_173250.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/3a3904af-24d1-2cd3-3f0c-993c47a45d5f.png)

**変換されたPDFファイル：**
![2023-12-15_173501.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4f5cc438-fbbd-f8f9-8924-9c56074057f6.png)

## Excelワークブック全体をPDFファイルに変換し、変換オプションを設定する
Workbook.SaveToFile()を使用すると、Excelファイルを簡単にPDFファイルに変換できますが、変換されたPDFファイルにより良い効果を得たい場合は、いくつかの変換オプション（例：余白）を設定することができます。以下は操作の例です：
1. ライブラリのインポート。
```python
from spire.xls import *
from spire.xls.common import *
```
2. Workbookクラスのオブジェクトを作成し、Excelファイルを読み込む。
```python
workbook = Workbook()
workbook.LoadFromFile("例.xlsx")
```
3. 余白を設定する。
```python
# ワークブック内のすべてのワークシートを繰り返し処理する
for sheet in workbook.Worksheets:

    # PageSetupオブジェクトを取得する
    pageSetup = sheet.PageSetup

    # ページの余白を設定する
    pageSetup.TopMargin = 0.3
    pageSetup.BottomMargin = 0.3
    pageSetup.LeftMargin = 0.3
    pageSetup.RightMargin = 0.3
```
4. 変換時にワークシートをページに合わせるように設定する。
```python
workbook.ConverterSetting.SheetFitToPage = True
```
5. ExcelファイルをPDFファイルに保存し、Workbookを閉じる。
```python
workbook.SaveToFile("output/ExcelをPDFに変換.pdf", FileFormat.PDF)
workbook.Dispose()
```
**完全なコードの例：**
```python
from spire.xls import *
from spire.common import *

# Workbookオブジェクトを作成する
workbook = Workbook()

# Excelワークブックをロードする
workbook.LoadFromFile("例.xlsx")

# ワークブック内のすべてのワークシートを繰り返し処理する
for sheet in workbook.Worksheets:

    # PageSetupオブジェクトを取得する
    pageSetup = sheet.PageSetup

    # ページの余白を設定する
    pageSetup.TopMargin = 0.3
    pageSetup.BottomMargin = 0.3
    pageSetup.LeftMargin = 0.3
    pageSetup.RightMargin = 0.3

# 変換時にワークシートをページに合わせるように設定する
workbook.ConverterSetting.SheetFitToPage = True

# ExcelワークブックをPDFファイルに変換する
workbook.SaveToFile("output/ExcelをPDFに変換.pdf", FileFormat.PDF)
workbook.Dispose()
```

**変換されたPDFファイル：**
![2023-12-15_173852.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/b52fa150-9f53-2a2c-be04-1e971c37c89a.png)

## 指定されたワークシートをPDFファイルに変換する
ワークブック全体ではなく、特定のワークシートを個別のPDFファイルに変換することもできます。以下は操作の例です：
1. ライブラリのインポート。
```python
from spire.xls import *
from spire.xls.common import *
```
2. Workbookクラスのオブジェクトを作成し、Excelファイルを読み込む。
```python
workbook = Workbook()
workbook.LoadFromFile("例.xlsx")
```
3. 余白を設定する。
```python
pageSetup = sheet.PageSetup
pageSetup.TopMargin = 0.3
pageSetup.BottomMargin = 0.3
pageSetup.LeftMargin = 0.3
pageSetup.RightMargin = 0.3
```
4. 変換時にワークシートをページに合わせるように設定する。
```python
workbook.ConverterSetting.SheetFitToPage = True
```
5. そのワークシートをPDFファイルに変換して保存する。
```python
sheet.SaveToPdf("output/ワークシートをPDFに変換.pdf")
workbook.Dispose()
```

**完全なコードの例：**
```python
from spire.xls import *
from spire.common import *

# Workbookオブジェクトを作成し、Excelファイルをロードする
workbook = Workbook()
workbook.LoadFromFile("例.xlsx")

# 2番目のワークシートを取得する
sheet = workbook.Worksheets[1]

# ページの余白を設定する
pageSetup = sheet.PageSetup
pageSetup.TopMargin = 0.3
pageSetup.BottomMargin = 0.3
pageSetup.LeftMargin = 0.3
pageSetup.RightMargin = 0.3

# 変換時にワークシートをページに合わせるように設定する
workbook.ConverterSetting.SheetFitToPage = True

# ワークシートをPDFファイルとして保存する
sheet.SaveToPdf("output/ワークシートをPDFに変換.pdf")
workbook.Dispose()
```

**元のワークシート：**
![2023-12-15_174135.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4605228e-638d-fa74-b236-9960ded315a1.png)

**変換されたPDFファイル：**
![2023-12-15_174212.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/0eeefc9a-d1dc-8736-377a-f34210a93558.png)

以上はPythonを使用してExcel表をPDFファイルに変換する方法についての説明でした。Spire.XLS for Pythonにはさまざまな変換機能がありますので、[Spire.XLS for Pythonチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html)を参照してください。また、[Spire.XLSフォーラム](https://www.e-iceblue.com/forum/spire-xls-f4.html)に参加してディスカッションに参加することもできます。