【Python】openpyxlでセルの表示形式をユーザー定義に変更する方法|number_formatの使い方

目次

使用環境

  • OS:Windows 10 Pro(バージョン:20H2)
  • 言語:Python(openpyxlライブラリ使用)

経緯

PythonでCSVファイルからデータを読み込むと、
**Excelに貼り付けた際、セルの表示形式が「標準」**になってしまうため、
自動で「ユーザー定義」形式(たとえば日付形式)に変えたいと考えました。

そこで、openpyxlでセルの表示形式を変更する方法について学びました。

解決方法:number_formatプロパティを使用する

openpyxlでは、セルオブジェクトの**number_format属性**を使うことで、
自由にユーザー定義形式へ変更できます。


コード例(セルA1を「yyyy/mm/dd」形式に設定)

from openpyxl import Workbook

# ワークブックとワークシートの作成
wb = Workbook()
ws = wb.active

# セルA1に値を入力
ws["A1"] = "2024-05-01"

# セルA1の表示形式をユーザー定義で変更
ws["A1"].number_format = "yyyy/mm/dd"

# ファイル保存
wb.save("sample.xlsx")

コード解説

  • ワークブックとワークシートを用意します。
  • セルA1に**日付データ(文字列)**を入力します。
  • **number_formatプロパティを使って、「yyyy/mm/dd」**というユーザー定義形式に設定します。
  • 最後にExcelファイルを保存します。

この操作により、Excel上ではA1セルが**「2024/05/01」**のような見た目に整形されます。


ポイントまとめ

  • number_formatに指定する文字列は、Excelで設定できるユーザー定義形式と同じルールです。
  • 例えば、
    • 日付形式 → "yyyy/mm/dd"
    • 数値にカンマ → "#,##0"
    • パーセンテージ → "0.00%" などが使えます。
  • 特別なインポート(is_builtinis_date_formatなど)は不要です。ただし、必要に応じてインポートする場合もあります。

まとめ

Python(openpyxl)でセルの表示形式をユーザー定義に変更したい場合は、

  • 対象セルに対して
  • .number_format = "書式文字列"

と設定するだけで簡単に実現できます。

Excelファイルをより見栄えよく整えたいときに非常に便利な機能です。

ここまでお読みいただき、誠にありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次