PythonでExcelセルの値を設定・更新・取得する方法

Excelワークブックは広く使用されているデータ管理ツールであり、Pythonと組み合わせることで大量データの自動処理が可能になります。Pythonを使用してExcelセルの値を設定、更新、および取得することで、作業効率を大幅に向上させ、手作業の繰り返しを減らすだけでなく、データ処理の柔軟性と拡張性を強化し、より多くの価値を生み出すことができます。この方法の活用範囲は、財務報告の自動化からデータ分析レポートの生成まで多岐にわたり、さまざまな業務で効率を大幅に向上させることができます。本記事では**Pythonを使用してExcelファイル内のセルの値を設定、更新、および取得する方法**を紹介します。

- **[PythonでExcelセルの値を設定する](#pythonでexcelセルの値を設定する)**
- **[PythonでExcelセルの値を更新する](#pythonでexcelセルの値を更新する)**
- **[PythonでExcelセルの値を取得する](#pythonでexcelセルの値を取得する)**

この記事で使用する方法には、[Spire.XLS for Python](https://jp.e-iceblue.com/introduce/spire-xls-for-python.html)が必要です。PyPIからインストールできます：`pip install spire.xls`。

[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)

## PythonでExcelセルの値を設定する
ライブラリ内の`Worksheet.Range.get_Item()`メソッドを使用して、Excelワークシート内の指定セルを`CellRange`オブジェクトとして取得します。例えば、`Range.get_Item(2, 1)`や`Range.get_Item("A2")`（2行目1列目）で指定できます。その後、`CellRange.Value`プロパティを使用してセルの値を設定するほか、テキスト、数値、ブール値など他の値を設定できます。また、`CellRange`クラスにあるフォーマット設定用のプロパティを使用してセルの書式も設定できます。操作手順の例は以下のとおりです：
1. 必要なモジュールをインポートする：`Workbook`、`FileFormat`、`DateTime`、`HorizontalAlignType`。
2. `Workbook`オブジェクトを作成する。
3. `Workbook.Worksheets.Clear()`メソッドでデフォルトのワークシートをクリアし、`Workbook.Worksheets.Add(sheetName: str)`メソッドで新しいワークシートを追加する。
4. `Worksheet.Range.get_Item()`メソッドを使って指定セルを`CellRange`オブジェクトとして取得する。
5. `Text`、`Value`、`DataTimeValue`、`Formula`、`NumberValue`などのプロパティでセルの値を設定する。
6. セルの書式を設定する。
7. `Workbook.SaveToFile()`メソッドでワークブックを保存する。
8. リソースを解放する。

**コード例**
```python
from spire.xls import Workbook, FileFormat, DateTime, HorizontalAlignType
import datetime

# Workbookのインスタンスを作成してExcelワークブックを作成
workbook = Workbook()

# デフォルトのワークシートをクリアし、新しいワークシートを追加
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("Sheet1")

# セルを取得し、テキストを設定
cell = sheet.Range.get_Item(2, 2)
cell.Text = "テキスト例"

# セルを取得し、通常の値を設定
cell1 = sheet.Range.get_Item(3, 2)
cell1.Value = "$123456"

# セルを取得し、日付値を設定
cell2 = sheet.Range.get_Item(4, 2)
cell2.DateTimeValue = DateTime.get_Now()

# セルを取得し、ブール値を設定
cell3 = sheet.Range.get_Item(5, 2)
cell3.BooleanValue = True

# セルを取得し、数式を設定
cell4 = sheet.Range.get_Item(6, 2)
cell4.Formula = "=SUM(B7)"

# セルを取得し、数値を設定し、数値フォーマットを設定
cell5 = sheet.Range.get_Item(7, 2)
cell5.NumberValue = 123456
cell5.NumberFormat = "#,##0.00"

# セルを取得し、数式配列を設定
cell6 = sheet.Range.get_Item(8, 2)
cell6.HtmlString = "<p><span style='color: blue; font-size: 18px;'>青色フォント18ピクセルサイズ</span></p>"

# フォーマットを設定
cellRange = sheet.Range.get_Item(2, 2, 7, 2)
cellRange.Style.Font.FontName = "Arial"
cellRange.Style.Font.Size = 14
cellRange.Style.HorizontalAlignment = HorizontalAlignType.Left

# 列幅を自動調整
sheet.AutoFitColumn(2)

# ファイルを保存
workbook.SaveToFile("output/SetExcelCellValue.xlsx", FileFormat.Version2016)
workbook.Dispose()
```

結果
![PythonでExcelセルの値を設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/50ea32d2-054b-abb4-5911-c95f4e1d08ee.png)

## PythonでExcelセルの値を更新する
Excelセルの値を更新する際には、該当セルを取得して、前述の方法で再設定することで、セルの値を更新できます。以下は操作手順の例です：
1. 必要なモジュールをインポートする：`Workbook`。
2. `Workbook`オブジェクトを作成する。
3. `Workbook.LoadFromFile()`メソッドでExcelファイルを読み込む。
4. `Workbook.Worksheets.get_Item()`メソッドでワークシートを取得する。
5. `Worksheet.Range.get_Item()`メソッドでセルを取得する。
6. CellRangeクラス内のプロパティでセルの値を再設定する。
7. `Workbook.SaveToFile()`メソッドでワークブックを保存する。
8. リソースを解放する。

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

# Workbookのインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("output/SetExcelCellValue.xlsx")

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

# セルを取得
cell = sheet.Range.get_Item(2, 2)

# セルの値を変更
cell.NumberValue = 45150
cell.NumberFormat = "[Green]#,##0;[RED]-#,##0"

# ワークブックを保存
workbook.SaveToFile("output/UpdateExcelCellValue.xlsx")
workbook.Dispose()
```

結果
![PythonでExcelセルの値を更新](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/83974704-932f-cf58-856f-5337342e1f7e.png)

## PythonでExcelセルの値を取得する
`CellRange.Value`プロパティを使うことで、セルの値を直接取得できます。以下はExcelセルの値を読み取る操作手順の例です：
1. 必要なモジュールをインポートする：`Workbook`。
2. `Workbook`オブジェクトを作成する。
3. `Workbook.LoadFromFile()`メソッドでExcelファイルを読み込む。
4. `Workbook.Worksheets.get_Item()`メソッドでワークシートを取得する。
5. 指定範囲内のセルをループし、`CellRange.Value`プロパティでセルの値を取得する。
6. 結果を出力する。

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

# Workbookのインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("output/SetExcelCellValue.xlsx")

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

# 第2列の第2行から第8行のセルをループ
for i in range(2, 8):
    # セルを取得
    cell = sheet.Range.get_Item(i, 2)
    # セルの値を取得
    value = cell.Value
    # 値を出力
    print(value)
workbook.Dispose()
```

結果
![PythonでExcelセルの値を取得](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/cd2252d3-bd18-e19b-d362-630b3cb54654.png)

この記事では、Pythonを使用してExcelセルの値を設定、更新、および取得する方法について説明しました。