Python で Excel を出力したいです。
Python で Excel を出力するには、Pandasライブラリを使う。
また、加工(セルの色やフォントの設定)なども可能だ。
✔️ 本記事のテーマ
Python で Excel を出力し、スタイル設定を行う方法
✔️ 読者さんへの前置きメッセージ
本記事は
「Python で Excel を出力する方法 と 出力する Excel シートのスタイル設定をする方法」
について書いています。
Python では Pandas ライブラリを使うことで、
簡単に Excel ファイルをプログラムから作成することができます。
この記事ではさらに深掘りして、
セルに背景色をつけたり、フォントを設定する方法について解説します。
この記事に掲載しているサンプルコードは環境さえ整っていれば、
コピペで動くはずなので使用して頂いてOKです。
では、解説していきましょう。
Python で Excel出力するための前準備
まず、Python で Excel出力をするために必要なライブラリをインストールします。
以下のコマンドでインストールしましょう。
pip install pandas, xlwt, xlrd, openpyxl
なお、Pandasライブラリのインストールについては
「Pandasのインストール方法【Pythonライブラリ】」
の記事で詳しく解説しているので参考にしてみて下さい。
Python で Excel を出力する
次に、Python で Excel に出力するデータを作成します。
今回は Pandas.DataFrame オブジェクトを作成しています。
import pandas as pd
df = pd.DataFrame({
'氏名': ['田中', '佐藤', '山田'],
'年齢': [40, 30, 22],
'役職': ['部長', '課長', '平社員']
})
なお、Pandasライブラリの DataFrame については
「PandasのDataFrameを徹底解説【コード付き】」
の記事で詳しく解説しているので参考にしてみて下さい。
データが作成できたら、Python で Excel ファイルとして出力します。
Python で Excel を出力するには to_excel 関数を使用します。
df.to_excel('./sample.xlsx')
たったこれだけで、Excel 出力を行うことができます。
ただ、このコードで出力される Excel ファイルはタイトルだけが強調されたあっさりしたものです。
Python ではコードを付け足すことで、
セルの色やフォントなども設定することができます。
次の章から、出力する Excel のスタイル設定について解説します。
Python で出力する Excel のスタイル設定
Python で出力する Excel のスタイル設定をするコードの全体像は以下のようになります。
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.styles import PatternFill, Border, Side, Font
# 出力するデータ
df = pd.DataFrame({
'氏名': ['田中', '佐藤', '山田'],
'年齢': [40, 30, 22],
'役職': ['部長', '課長', '平社員']
})
# ワークブックの生成
wb = Workbook()
# ワークシートの生成
ws = wb.active
ws.title = 'サンプルシート'
# DataFrame を行単位のデータにする
rows = dataframe_to_rows(df, index=False, header=True)
# 1 セルずつ処理を実行する
for row_no, row in enumerate(rows, 1):
for col_no, value in enumerate(row, 1):
# データを書き込む
ws.cell(row=row_no, column=col_no, value=value)
# 罫線を設定する
ws.cell(row=row_no, column=col_no).border = Border(
top=Side(border_style="dotted", color='000000'),
left=Side(border_style="thin", color='000000'),
right=Side(border_style="thin", color='000000'),
bottom=Side(border_style="dotted", color='000000')
)
# 表示倍率の設定
ws.sheet_view.zoomScale = 200
# 列幅の設定
ws.column_dimensions['A'].width = 15
ws.column_dimensions['B'].width = 15
ws.column_dimensions['C'].width = 15
# ヘッダー行のスタイル設定
header = ws[1]
for header_cell in header:
# フォントを設定する
header_cell.fill = PatternFill(patternType='solid', fgColor='008000')
# 罫線を設定する
header_cell.border = Border(
top=Side(border_style="thin", color='000000'),
left=Side(border_style="thin", color='000000'),
right=Side(border_style="thin", color='000000'),
bottom=Side(border_style="thin", color='000000')
)
# 背景色を設定する
header_cell.font = Font(bold=True, color='FFFFFF')
# Excelファイルを出力
wb.save('./sample_3.xlsx')
このコードによって、以下のような Excel シートが出力されます。
Python では出力する Excel のスタイル設定として
- 背景色
- 罫線
- フォント
- ワークシートの表示倍率
- 列幅の設定
を設定することができます。
サンプルコードを順番に解説していきましょう。
ワークシートの作成
Python で出力する Excel のスタイル設定を行うには、
まずワークシートを作成する必要があります。
# Excel ワークブックの生成
wb = Workbook()
# Excel ワークシートの生成
ws = wb.active
ws.title = 'サンプルシート'
このようにすることで、
Excel 操作を行うためのワークシートオブジェクト (= ws )を生成することができます。
セルオブジェクトを取り出す
実際のスタイル設定には セル単位で行います。
そこで、先ほどのワークシートオブジェクトからセルオブジェクトを取り出します。
セルオブジェクトを取り出すには2つの方法があります。
row と column でセルを指定して取り出す
ワークシートオブジェクト.cell(row=数字, column=数字)
と記述することでセルオブジェクトを取り出すことができます。
このセルオブジェクトを使用して
ws.cell(row=数字, column=数字, value=値)
とすることで「指定した列」「指定した行」のセルに「値」を書き込むことができます。
サンプルコードでは以下のように、このアクセス方法と for 文でセルに値を書き込んでいます。
for row_no, row in enumerate(rows, 1):
for col_no, value in enumerate(row, 1):
# データを書き込む
ws.cell(row=row_no, column=col_no, value=value)
enumerate(rows, 1) としているのは Excel の行番号の始まり 1 に合わせるためです。
行を取り出し、ループ処理で取り出す
ワークシートオブジェクトを用いて、
行を取り出し、それをループ処理に使うことでセルオブジェクトを取り出すことができます。
for セルオブジェクト in 行:
処理内容
サンプルコードでは以下のように、
この方法でヘッダー行のセルにだけ特定のスタイル設定を適用しています。
header = ws[1] # 1行目を取り出す
for header_cell in header:
# ヘッダーのスタイル設定
header_cell.fill = PatternFill(patternType='solid', fgColor='008000')
このようにセルオブジェクトのプロパティに値をセットすることでスタイル設定を行います。
背景色を設定する
背景色を設定するには fill プロパティに PatternFill オブジェクトをセットします。
セルオブジェクト.fill = PatternFill(patternType='solid', fgColor='008000')
PatternFill オブジェクトはいくつかのプロパティを持ちます。
fgColor にカラーコードを渡すことで、好きな色に背景色を設定することができます。
patternType=’solid’ を設定することでセル全体を指定しています。
おまじない的に渡しておきましょう。
罫線を設定する
罫線を設定するには border プロパティに Border オブジェクトをセットします。
セルオブジェクト.border = Border(
top=Side(border_style="dotted", color='000000'),
left=Side(border_style="thin", color='000000'),
right=Side(border_style="thin", color='000000'),
bottom=Side(border_style="dotted", color='000000')
)
Border オブジェクトには top, left, right, bottom プロパティをセットします。
文字通り、それぞれが上下左右の罫線の設定になります。
ややこしいのですが、
top, left, right, bottom プロパティにはさらに Side オブジェクトをセットします。
Side オブジェクト の
border_style で罫線の種類を、color で罫線の色を指定することができます。
罫線の種類として、選択可能な一例を以下に挙げておきます。
- ‘dotted’
- ‘double’
- ‘hair’
- ‘thick’
- ‘thin’
- ‘dashDot’
フォントを設定する
フォントを設定するには font プロパティに Font オブジェクトをセットします。
セルオブジェクト.font = Font(bold=True, color='FFFFFF')
Font オブジェクトのプロパティ値で各種設定を行います。
bold=True とすると太字になり、color で文字色を指定することができます。
表示倍率を設定する
表示倍率を設定するには ワークシートオブジェクト.sheet_view.zoomScale に数値を設定します。
ws.sheet_view.zoomScale = 200
サンプルコードでは、2倍( = 200% )に設定しています。
Pandas ライブラリを学ぶための1冊
今回は、Python の Excel 出力とそのスタイル設定について解説しました。
記事で使用したPandasはデータサイエンスの世界でよく使われるライブラリです。
Pandas ライブラリの使い方や機能についてスキルをつけるなら、
おそらく以下の書籍が一番良いです。
この書籍は Pandasライブラリ に初めて触れる方にも分かりやすく書かれています。
ライブラリの知識だけでなく、実際のユースケースで活用する方法まで、
実践的なスキルを身に付けることができます。
Amazon 上で試し読みもできるのでぜひ一読してみて下さい。
また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。
オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。
オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。
オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。
✔️オススメのプログラミングスクール ベスト3
- 未経験からIT業界へ転職なら【DMM WEBCAMP】
※ROLANDさんがプロモーターを務める有名スクールです。無料体験の内容も充実していて人気です。 - プログラミングのオンラインスクールCodeCamp
※ここも有名なスクールです。サポート体制がしっかりしているので安心です。 - 3ヶ月間のプログラミングスクール【Tech Boost】
※比較的新しいスクールですが、そのクオリティの高さから伸びてきているスクールです。
プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。
気になった方はぜひチェックしてみて下さい〜!
コメント