PythonでExcelセルの表示形式(数値フォーマット)を設定する

Excelは強力なデータ処理および分析ツールであり、大量のデータを保存できるだけでなく、複雑なデータ処理や可視化機能もサポートしています。Excelシートのデータを適切に表示する方法は、Excelファイル作成の重要な要素の一つです。これには、Excelセルの数値フォーマットの設定が含まれます。数値フォーマットは、データの美学的な表示（通貨、日付、パーセンテージなどの形式）だけでなく、データの読みやすさと正確性にも直接影響します。Python言語を使用することで、柔軟に **Excelセルの数値フォーマット(表示形式)** を設定し、データの一貫性と専門的な標準を保証できます。本記事では、Pythonを使用してExcelシートのセルの数値フォーマットを設定する方法を紹介します。

- **[フォーマットコードを使用してExcelセルの数値フォーマットを設定する](#フォーマットコードを使用してexcelセルの数値フォーマットを設定する)**

ここで使用する方法は、[Spire.XLS for Python](https://www.e-iceblue.com/Download/Spire-XLS-Python.html)を必要とします。PyPI：`pip install Spire.XLS`。

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

## フォーマットコードを使用してExcelセルの数値フォーマットを設定する
Excelのセルの数値表示フォーマットは、フォーマットコードによって設定できます。これらのコードは、一連のシンボルによって、数値データ、時間と日付データ、および通貨データなどの表示方法を決定します。以下は一般的なフォーマットコードのシンボルです：
* **#**：数値プレースホルダーで、ゼロ以外の数字のみを表示します。
* **0**：数値プレースホルダーで、数字がゼロでも少なくとも一つの位置を占めます。
* **;（セミコロン）**：正の数、負の数、およびゼロのフォーマットを区切るために使用します。
* **/（スラッシュ）**：日付フォーマットで年、月、日を区切るために使用します。
* **$**：通貨記号で、システムの地域設定に応じて通貨の値を表示します。
* **()（括弧）**：負の数のフォーマットで、負の数を括弧内に表示します。
* **[]（角括弧）**：条件付きフォーマット設定に使用します。例：`[Red]`は色の設定、`[<=100]"Low";[>100]"High"`は条件式。

ライブラリには、`CellRange.NumberValue`を使用してセルにデータを追加し、`CellRange.NumberFormat`を使用してフォーマットコードでセルデータの数値表示フォーマットを設定する機能が提供されています。以下は、Pythonを使用してExcelセルの数値フォーマットを設定する操作手順です：
1. 必要なモジュールをインポートする。
2. `Workbook`インスタンスを作成し、Excelブックを作成する。
3. `Workbook.Worksheets.Clear()`メソッドを使用してデフォルトのワークブックをクリアし、`Workbook.Worksheets.Add()`メソッドを使用して新しいワークシートを作成する。
4. `Worksheet.Range[].Text`プロパティを使用してヘッダーテキストを設定する。
5. `Worksheet.Range[].NumberValue`プロパティを使用してセルデータを設定し、`Worksheet.Range[].NumberFormat`を使用してフォーマットコードでセルの数値フォーマットを設定する。
6. `CellRange.Style.Font`プロパティ下のプロパティを使用してフォントフォーマットを設定し、`CellRange.AutoFitRows()`および`CellRange.AutoFitColumns()`メソッドを使用して行高と列幅を自動調整する。
7. `Workbook.SaveToFile()`メソッドを使用してワークブックを保存する。
8. リソースを解放する。

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

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

# デフォルトのワークシートをクリアして新しいワークシートを作成
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("数字フォーマット")

# タイトル行を設定
sheet.Range["B9"].Text = "数字フォーマット"
sheet.Range["C9"].Text = "数値"
sheet.Range["D9"].Text = "表示"

# カンマ区切りと小数点以下二桁の数値を設定
sheet.Range["B10"].Text = "カンマ区切りと小数点以下二桁の数値"
sheet.Range["C10"].Text = "-1234123.5678"
sheet.Range["D10"].NumberValue = -1234123.5678
sheet.Range["D10"].NumberFormat = "#,##0.00"

# 赤色の数値を設定
sheet.Range["B11"].Text = "赤色の数値"
sheet.Range["C11"].Text = "12345.12345"
sheet.Range["D11"].NumberValue = 12345.12345
sheet.Range["D11"].NumberFormat = "[Red]###0.00"

# 小数点以下二桁のパーセンテージを設定
sheet.Range["B12"].Text = "小数点以下二桁のパーセンテージ"
sheet.Range["C12"].Text = "0.12345"
sheet.Range["D12"].NumberValue = 0.12345
sheet.Range["D12"].NumberFormat = "0.00%"

# 括弧付きの数値を設定
sheet.Range["B13"].Text = "括弧付きの数値"
sheet.Range["C13"].Text = "-1234.5678"
sheet.Range["D13"].NumberValue = -1234.5678
sheet.Range["D13"].NumberFormat = "(###0.00;(###0.00))"

# 日付を設定
sheet.Range["B14"].Text = "日付"
sheet.Range["C14"].Text = "36526"
sheet.Range["D14"].NumberValue = 36526
sheet.Range["D14"].NumberFormat = "yyyy/m/d"

# 24時間制の時間を設定
sheet.Range["B15"].Text = "24時間制の時間"
sheet.Range["C15"].Text = "0.6"
sheet.Range["D15"].NumberValue = 0.6
sheet.Range["D15"].NumberFormat = "H:MM:SS"

# 日本語形式の通貨を設定
sheet.Range["B16"].Text = "日本語形式の通貨"
sheet.Range["C16"].Text = "1234.56"
sheet.Range["D16"].NumberValue = 1234.56
sheet.Range["D16"].NumberFormat = "¥#,##0.00"

# 科学的記数法を設定
sheet.Range["B17"].Text = "科学的記数法"
sheet.Range["C17"].Text = "1234.5678"
sheet.Range["D17"].NumberValue = 1234.5678
sheet.Range["D17"].NumberFormat = "0.00E+00"

# 日付と12時間制の時間を設定
sheet.Range["B18"].Text = "日付と12時間制の時間"
sheet.Range["C18"].Text = "36526"
sheet.Range["D18"].NumberValue = 36526
sheet.Range["D18"].NumberFormat = "yyyy/m/d h:mm:ss 午前/午後"

# テキスト付きの数値を設定
sheet.Range["B19"].Text = "テキスト付きの数値"
sheet.Range["C19"].Text = "1234.5678"
sheet.Range["D19"].NumberValue = 1234.5678
sheet.Range["D19"].NumberFormat = "\"JPY \"###0.00"

# フォント、フォントサイズを設定し、行列を自動調整
sheet.AllocatedRange.Style.Font.FontName = "Yu Gothic Medium"
sheet.AllocatedRange.Style.Font.Size = 13
sheet.AllocatedRange.AutoFitRows()
sheet.AllocatedRange.AutoFitColumns()

# ファイルを保存
workbook.SaveToFile("output/Excelセルの表示形式.xlsx", FileFormat.Version2016)
workbook.Dispose()
```

保存されたワークブック
![PythonでExcelのセルの表示形式を設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/fd2f938b-83f8-7852-5c7c-33617fca4dfe.png)

本記事では、Pythonを使用してExcelシートのセルの数値フォーマットを設定する方法を紹介しました。

より多くのExcelファイル処理のヒントについては、[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)をご覧ください。