PythonによるExcel印刷ページ設定 - ページ余白、サイズ、方向、印刷領域、拡大縮小

Excelをデータ分析やレポート作成に使用する場合、ページ設定は最終的な出力をプロフェッショナルで美しいものにするための重要なステップです。合理的なページ設定は、印刷効果を最適化するだけでなく、データの可読性を高めることもできます。
この記事では、Pythonを使ってExcelのページ設定オプションを設定する方法を紹介します。

* [PythonでExcelのページマージンを設定する](#pythonでexcelのページマージンを設定する) 
* [PythonでExcelの用紙サイズと向きを設定する](#pythonでexcelの用紙サイズと向きを設定する)
* [PythonでExcelの印刷領域を設定する](#pythonでexcelの印刷領域を設定する)
* [PythonでExcelの印刷拡大縮小を設定する](#pythonでexcelの印刷拡大縮小を設定する)


## サードパーティのPythonライブラリ
Pythonを使用してExcelのページ設定機能を実装するには、まず[**Spire.XLS for Python**](https://www.e-iceblue.com/Introduce/xls-for-python.html)をインストールする必要があります。このPythonライブラリは、[このリンクから製品パッケージをダウンロードし]()、ローカルパスからインストールするか、以下のpipコマンドを使用して直接インストールすることができます：
> pip install Spire.XLS


## Excelのページ設定に使用されるプロパティ 
Spire.XLS for Pythonライブラリは、Excelのページ設定を表す **`PageSetup`** クラスを提供しています。**`PageSetup`** クラスには、印刷前にExcelワークシートのページ設定オプションを設定するために使用される様々なプロパティが含まれています。次の表は、使用されるプロパティのいくつかを説明したものです：

| プロパティ | 対応するページ設定オプション| 
|:-----------|:-----------|
|TopMargin, BottomMargin, LeftMargin, RightMargin, HeaderMarginInch, FooterMarginInch     | 上、下、左、右、ヘッダー、フッターのマージンをそれぞれ設定するために使用する     |
| PaperSize     | 用紙サイズの設定に使用（A3/A4/レター/B4/B5などの一般的なサイズに対応）    |
| Orientation     | ページの向き（縦／横）を設定します   |
| PrintArea    | 印刷領域の指定に使用         |
| Zoom      | 印刷スケーリングの設定に使用    |
| FitToPagesTall, FitToPagesWide    | 特定のページ数に合わせて印刷物の幅と高さを縮小するために使用します     |


## PythonでExcelのページマージンを設定する 
上下左右の余白を調整することで、ページ上の表やテキストの位置をコントロールできます。以下はサンプルコードです：
```python
from spire.xls import *
from spire.xls.common import *
 
# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
 
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
 
# PageSetupオブジェクトの取得
pageSetup = sheet.PageSetup
 
# ワークシートのページマージンを設定する（デフォルトの単位はインチ、1インチ＝2.54cm）
pageSetup.TopMargin = 1
pageSetup.BottomMargin = 1
pageSetup.LeftMargin = 0.8
pageSetup.RightMargin = 0.8
pageSetup.HeaderMarginInch= 1
pageSetup.FooterMarginInch= 1
 
# Excelファイルを保存する
workbook.SaveToFile("ExcelPageMargin.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
![ExcelPageMargin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/bbab4367-045b-5a35-b311-aa04a7775b0c.png)



## PythonでExcelの用紙サイズと向きを設定する
適切な用紙サイズと向きを選択することで、印刷出力が特定のシーン要件を満たすようにすることができます。下記はサンプルコードです：
```python
from spire.xls import *
from spire.xls.common import *
 
# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
 
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
 
# PageSetupオブジェクトの取得
pageSetup = sheet.PageSetup
 
# 用紙サイズをA4に設定する
pageSetup.PaperSize = PaperSizeType.PaperA4
 
# ページの向きを横向きに設定する
pageSetup.Orientation = PageOrientationType.Landscape
 
# Excelファイルを保存する
workbook.SaveToFile("ExcelPageSizeOrientation.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
![ExcelPageSizeAndOrientation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/2a1716cf-35ae-de8e-1de9-9c6b2159d8e6.png)


## PythonでExcelの印刷領域を設定する
Excelで印刷範囲を設定することで、ワークシートの特定の部分のみを印刷することができ、不必要な内容で用紙を無駄にすることを防ぎ、印刷効率を向上させることができます。下記はサンプルコードです：
```python
from spire.xls import *
from spire.xls.common import *
 
# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
 
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
 
# PageSetupオブジェクトの取得
pageSetup = sheet.PageSetup
 
# ワークシートの印刷領域を「A1:F8」に設定する
pageSetup.PrintArea = "A1:F8"
 
# Excelファイルを保存する
workbook.SaveToFile("ExcelPrintArea.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
![ExcelPrintArea.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/57d6adc1-19f9-f1ea-d248-5105c20d613b.png)


## PythonでExcelの印刷拡大縮小を設定する
印刷倍率を設定することで、1ページにより多くの情報を明確に表示できるよう、印刷サイズを調整することができます。下記はサンプルコードです：
```python
from spire.xls import *
from spire.xls.common import *
 
# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("sample.xlsx")
 
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
 
# PageSetupオブジェクトの取得
pageSetup = sheet.PageSetup
 
# ワークシートのスケーリングを90%に設定する
pageSetup.Zoom = 90
 
# 印刷時にワークシートが1ページに収まるように、幅と高さを調整する#pageSetup.FitToPagesTall = 1
#pageSetup.FitToPagesWide = 1
 
# Excelファイルを保存する
workbook.SaveToFile("ExcelScaling.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
![ExcelPrintScaling.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/3d7b1074-ec3c-a69d-018b-95f98acee866.png)

* * *

> PythonでExcelファイルを操作する他の例は、以下を参照してください：

https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html