PythonでExcelのセルの枠線を設定する

データ駆動型の業務シナリオにおいて、**Excelセルの枠線を自動で設定**することは、データ処理効率を高める上で重要な要素となります。プログラムによって枠線のスタイルを制御することで、大量の帳票の書式を統一できるだけでなく、線の太さや実線・破線といった視覚要素により、データの論理構造を明確に表現することが可能になります。さらに、動的に更新される分析レポートに対しても、コードで定義した枠線ルールが内容の変化に柔軟に対応できるため、手作業による繰り返し調整のミスを防ぎ、再利用可能な標準化フレームワークの構築にも貢献します。

本記事では、**Pythonを用いてExcelワークブック内のセルに枠線を設定する方法**を解説します。

- PythonでExcelに内枠線と外枠線を設定する方法
- Pythonでセルの上下左右に枠線を設定する方法

使用する方法は[Free Spire.XLS for Python](https://jp.e-iceblue.com/introduce/introduce-free-xls-for-python.html)ライブラリに基づいています。PyPIで以下のコマンドからインストールできます：  
`pip install spire.xls`

## PythonでExcelに内枠線と外枠線を設定する

Spire.XLSでは、`CellRange.BorderAround()` メソッドと `CellRange.BorderInside()` メソッドが提供されており、指定したセル範囲に対して、外枠線および内枠線をそれぞれ設定できます。枠線のスタイルや色も指定可能です。

### Excelセル範囲に内枠線・外枠線を設定する手順

1. **必要なクラスのインポート**  
   使用するクラス：
   - `Workbook`：Excelワークブックを表すクラス  
   - `LineStyleType`：枠線のスタイル（例：`Thick`、`Thin`）  
   - `ExcelColors`：枠線に使う定義済みの色

2. **Workbookインスタンスの作成とファイルの読み込み**  
   `Workbook()` でインスタンスを作成し、`LoadFromFile(path)` でExcelファイルを読み込みます。

3. **ワークシートの取得**  
   `Workbook.Worksheets.get_Item(index)` メソッドで対象のワークシートを取得します。

4. **枠線を設定するセル範囲の選択**  
   `sheet.Range.get_Item(startRow, startCol, endRow, endCol)` で対象の範囲を指定します。

5. **外枠線の設定**  
   `Range.BorderAround(lineStyle, color)` で範囲全体の外側に枠線を設定します。  
   - `lineStyle` は `LineStyleType` の列挙値  
   - `color` は `ExcelColors` の列挙値

6. **内枠線の設定**  
   `Range.BorderInside(lineStyle, color)` で範囲内の行・列に枠線を設定します。  
   表形式のデータや複数行・列にわたる範囲に適しています。

7. **保存とリソースの解放**  
   `SaveToFile(path)` で変更を保存し、`Dispose()` でリソースを解放します。

**コード例**
```python
from spire.xls import Workbook, LineStyleType, ExcelColors

# Workbookオブジェクトの作成
workbook = Workbook()

# Excelファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# タイトルとヘッダー行を取得
headerRow = sheet.Range.get_Item(1, 1, 2, sheet.Range.ColumnCount)
# タイトルとヘッダーに外枠線を設定
headerRow.BorderAround(LineStyleType.Thick, ExcelColors.BlueGray)

# データ行を取得
dataRows = sheet.Range.get_Item(3, 1, sheet.Range.RowCount, sheet.Range.ColumnCount)
# データ行に内枠線を設定
dataRows.BorderInside(LineStyleType.Thin, ExcelColors.BrightGreen)

# ファイルを保存してリソースを解放
workbook.SaveToFile("output/OutsideInsideBorders.xlsx")
workbook.Dispose()
```

出力結果のイメージ
![uploading...0]()

## Pythonでセルの上下左右に枠線を設定する

Spire.XLSでは、`CellRange.Style.Borders.get_Item()` メソッドを用いて、セルの上下左右や斜線の枠線を個別に設定することも可能です。各枠線の種類に対してスタイルや色を指定できます。

### セルや行に個別の枠線を設定する手順

1. **必要なクラスのインポート**  
   使用するクラス：
   - `Workbook`：Excelワークブック  
   - `BordersLineType`：枠線の種類（例：`EdgeTop`、`EdgeBottom`など）  
   - `LineStyleType`：枠線のスタイル（例：`Thick`、`Dashed`など）  
   - `Color`：枠線の色（`Color.get_XXX()` で取得可能）

2. **Workbookの作成とExcelファイルの読み込み**  
   - インスタンス作成：`workbook = Workbook()`  
   - ファイル読み込み：`workbook.LoadFromFile(path)`

3. **対象ワークシートの取得**  
   `Workbook.Worksheets.get_Item(index)` でワークシートを取得

4. **対象のセルまたは行の取得**  
   - 行を取得：`sheet.Rows.get_Item(rowIndex)`  
   - セルを取得：`sheet.Range.get_Item(row, column)`

5. **枠線スタイルと色の設定**  
   - 対象の枠線を取得：  
     `style = target.Style.Borders.get_Item(BordersLineType.XXX)`  
     `XXX` は以下のいずれか：
     - `EdgeTop`（上枠線）
     - `EdgeBottom`（下枠線）
     - `EdgeLeft`（左枠線）
     - `EdgeRight`（右枠線）
     - `DiagonalUp`（斜め上）
     - `DiagonalDown`（斜め下）
   - 線のスタイルと色を設定：
     ```python
     style.LineStyle = LineStyleType.XXX
     style.Color = Color.get_XXX()
     ```

6. **ファイルの保存とリソースの解放**  
   `SaveToFile(path)` で保存し、`Dispose()` で終了処理

**コード例**
```python
from spire.xls import Workbook, BordersLineType, LineStyleType, Color

# Workbook オブジェクトの作成
workbook = Workbook()

# Excel ファイルを読み込む
workbook.LoadFromFile("Sample.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# 【例1】第2行の下枠線を白の太線に設定
row2 = sheet.Rows.get_Item(1)
row2.Style.Borders.get_Item(BordersLineType.EdgeBottom).LineStyle = LineStyleType.Thick
row2.Style.Borders.get_Item(BordersLineType.EdgeBottom).Color = Color.get_White()

# 【例2】第4行の上枠線を赤の点線に設定
row4 = sheet.Rows.get_Item(3)
row4.Style.Borders.get_Item(BordersLineType.EdgeTop).LineStyle = LineStyleType.Dotted
row4.Style.Borders.get_Item(BordersLineType.EdgeTop).Color = Color.get_Red()

# 【例3】第6行第2列のセルに左枠線（青の点画線）を設定
cell1 = sheet.Range.get_Item(6, 2)
cell1.Style.Borders.get_Item(BordersLineType.EdgeLeft).LineStyle = LineStyleType.DashDotDot
cell1.Style.Borders.get_Item(BordersLineType.EdgeLeft).Color = Color.get_Blue()

# 【例4】第8行第2列のセルに右枠線（茶色の破線）を設定
cell2 = sheet.Range.get_Item(8, 2)
cell2.Style.Borders.get_Item(BordersLineType.EdgeRight).LineStyle = LineStyleType.Dashed
cell2.Style.Borders.get_Item(BordersLineType.EdgeRight).Color = Color.get_Brown()

# 【例5】第10行に下方向の斜線枠線（黄色の二重線）を設定
row10 = sheet.Rows.get_Item(9)
row10.Style.Borders.get_Item(BordersLineType.DiagonalDown).LineStyle = LineStyleType.Double
row10.Style.Borders.get_Item(BordersLineType.DiagonalDown).Color = Color.get_Yellow()

# 【例6】第12行に上方向の斜線枠線（水色の中太線）を設定
row12 = sheet.Rows.get_Item(11)
row12.Style.Borders.get_Item(BordersLineType.DiagonalUp).LineStyle = LineStyleType.Medium
row12.Style.Borders.get_Item(BordersLineType.DiagonalUp).Color = Color.get_Aqua()

# ファイルを保存し、リソースを解放
workbook.SaveToFile("output/SingleBorders.xlsx")
workbook.Dispose()
```

出力結果のイメージ
![2025-04-18_174421.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/a978e9d8-1094-4549-8341-2d889c7e4557.png)

---

本記事では、Pythonを使用してExcelに枠線を設定する方法を紹介しました。内枠線および外枠線の設定方法に加え、上下左右および斜線枠線の個別設定方法も解説しました。