
日々のデータ処理や集計業務において、結果をExcelファイルとして提出・共有する機会は多いですよね。単に数値を書き出すだけでなく、セルに色を付けたり、グラフを添えたりして、ひと目で伝わるレポートを作りたい場面もよくあります。
そこで活躍するのが、Pythonライブラリの「XlsxWriter」です。今回は、見栄えの良いExcelファイルをゼロから効率的に作成できるXlsxWriterの魅力と実践的な使い方をご紹介します。
XlsxWriterの概要
XlsxWriterは、Excel 2007以降の標準形式(.xlsx)ファイルを新規作成するためのPythonライブラリです。データの書き込みはもちろんのこと、高度なセルの書式設定、条件付き書式、計算式の埋め込み、さらには各種チャート(棒グラフ、折れ線グラフ、円グラフなど)の描画に至るまで、Excelで手作業で行うような表現を幅広く自動化できます。
既存のファイルを読み込んで編集することはできませんが、新規作成に特化している分、非常に高速かつリッチな機能が揃っているのが特徴です。
サーバー上でExcelを起動せずに、これほど綺麗なワークシートを作れるのはとてもスマートですよね。
XlsxWriterを使うメリット
- 豊富なデザイン・書式設定:フォントの種類やサイズ、背景色、罫線、数値の表示形式(パーセンテージや通貨表示など)を細かくカスタマイズできます。
- 多彩なグラフ描画機能:Excel標準のチャート機能をAPIから手軽に呼び出せます。見栄えの良いビジネスグラフがPythonだけで完結します。
- 外部ツールへの非依存:Microsoft Excel自体がインストールされていない環境(Linuxサーバーやクラウド環境など)でも、単体で動作します。
サンプルコード:売上表とグラフの自動作成
それでは、月別の売上データを表にし、見出しの装飾と縦棒グラフを追加したExcelファイルを生成してみましょう。
import xlsxwriter
# ワークブックとワークシートの作成
workbook = xlsxwriter.Workbook('monthly_sales.xlsx')
worksheet = workbook.add_worksheet('売上レポート')
# スタイルの定義
header_format = workbook.add_format({
'bold': True,
'font_color': 'white',
'bg_color': '#4B6B94',
'border': 1,
'align': 'center',
'valign': 'vcenter'
})
currency_format = workbook.add_format({
'num_format': '¥#,##0',
'border': 1
})
label_format = workbook.add_format({
'border': 1,
'align': 'center'
})
# ヘッダーの書き込み
headers = ['月', '売上金額 (円)']
for col_num, header_title in enumerate(headers):
worksheet.write(0, col_num, header_title, header_format)
# データ行の書き込み
data = [
['4月', 1200000],
['5月', 1450000],
['6月', 1300000],
['7月', 1800000],
]
for row_num, row_data in enumerate(data, start=1):
worksheet.write(row_num, 0, row_data[0], label_format)
worksheet.write(row_num, 1, row_data[1], currency_format)
# 列幅の自動調整(視認性向上)
worksheet.set_column('A:A', 10)
worksheet.set_column('B:B', 18)
# 棒グラフの作成
chart = workbook.add_chart({'type': 'column'})
chart.add_series({
'name': '=売上レポート!$B$1',
'categories': '=売上レポート!$A$2:$A$5',
'values': '=売上レポート!$B$2:$B$5',
'fill': {'color': '#6BAED6'},
})
chart.set_title({'name': '月別売上推移'})
chart.set_x_axis({'name': '月'})
chart.set_y_axis({'name': '金額'})
chart.set_style(10)
# グラフをシートに挿入
worksheet.insert_chart('D2', chart)
# ファイルの保存
workbook.close()
workbook.close() を呼び出すのを忘れるとファイルが正しく書き出されないので、最後に必ず実行してくださいね。
みーちゃんのワンポイント
XlsxWriterは「新規作成専用」のライブラリであるため、既存のExcelファイルを読み込んで追記・変更することはできません。既存ファイルの編集が必要な場合はopenpyxl、ゼロから綺麗な定型レポートを高速生成したい場合はXlsxWriter、というように目的に応じて使い分けるのがベストプラクティスです。

