1. はじめに
前回の記事 ではGitBucketのWeb APIを利用してIssueを取得し、Jsonファイルとして保存する方法について説明しました。今回はxlsxwriterというライブラリを利用して、保存したJsonファイルのデータからExcelファイルを出力する方法について説明します。
2. xlsxwriterのインストール
xlsxwriterのインストールはpipで簡単に行うことができます。
pip install xlsxwriter
ソースコードはGitHub に公開されています。
ソースコードからビルドしたい方はリポジトリをcloneした後、python setup.py install
コマンドでインストールしてください。
3. ソースコード
# -*- coding: utf-8 -*-
import os
import json
import xlsxwriter
# report excel file contains json file data
def report_excel_from_json(fileName):
# oepn and load json file
# ★ポイント0
f = open(fileName, 'r')
jsonData = json.load(f)
# ★ポイント1
workbook = xlsxwriter.Workbook(fileName + '.xlsx')
# ★ポイント2
worksheet = workbook.add_worksheet('issues')
rowNum = 0
# ★ポイント3
worksheet.write(rowNum, 0, unicode('issue番号', 'utf-8'))
worksheet.write(rowNum, 1, unicode('ステータス', 'utf-8'))
worksheet.write(rowNum, 2, unicode('作成日時', 'utf-8'))
worksheet.write(rowNum, 3, unicode('更新日時', 'utf-8'))
worksheet.write(rowNum, 4, unicode('URL', 'utf-8'))
worksheet.write(rowNum, 5, unicode('タイトル', 'utf-8'))
worksheet.write(rowNum, 6, unicode('本文', 'utf-8'))
rowNum+=1
for row in jsonData:
worksheet.write(rowNum, 0, row['number'])
worksheet.write(rowNum, 1, row['state'])
worksheet.write(rowNum, 2, row['created_at'])
worksheet.write(rowNum, 3, row['updated_at'])
worksheet.write(rowNum, 4, row['html_url'])
worksheet.write(rowNum, 5, unicode(row['title'].encode('utf-8'), 'utf-8'))
worksheet.write(rowNum, 6, unicode(row['body'].encode('utf-8'), 'utf-8'))
rowNum+=1
# ★ポイント4
workbook.close()
if __name__=='__main__':
fileName = os.getenv("JSON_FILE")
report_excel_from_json(fileName)
★ポイント0
Excelに設定する入力データを用意します。サンプルではJsonファイルに格納されたデータを利用することにします。
ここは要件に応じて準備してください。
★ポイント1
最初にxlsxwriter.Workbook()
でExcelのワークブックのインスタンスを生成します。
引数には作成するExcelファイルのファイル名を指定します。
★ポイント2
次にworkbookのadd_worksheet()
でワークシートを作成します。
引数にはシート名を指定します。指定しない場合はSheet1
(添え字は1からの連番)のようなシート名で作成されます。
サンプルでは「issues」という名前でシートを作成しました。
★ポイント3
セルにデータを設定するにはworksheetのwrite()
を利用します。
文字化け対策としてマルチバイト文字はutf-8としました。
- 第1引数 : 0から始まる行番号
- 第2引数 : 0から始まる列番号
- 第3引数 : 書き込むデータ
なおxlsxwriterにはwrite_datetime()
やwrite_url()
などのデータ型に応じた専用のメソッドも用意されています。詳細については公式ガイドライン を参照ください。
★ポイント4
最後にworkbookをクローズしてデータをファイルに書き込みます。
4. さいごに
今回はxlsxwriterを利用してPythonでExcelファイルを出力する方法について説明しました。
JavaでExcelファイルを扱う場合はApache POI をよく利用しますが、xlsxwriterの利用方法はApache POIと似たような感じでした。Apache POIを利用したことがある方には使いやすいライブラリかと思います。
今回はxlsxwriterでゼロからExcelファイルを作成しました。Excelで帳票を作成する場合、事前にテンプレートとなるExcelファイルを用意してデータを流し込む使い方もあるかと思います。機会があればテンプレートファイルを利用したExcel帳票の作成についても記事にできればと思います。