3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonでGitBucketのIssueをExcel出力する(Excel出力編)

Posted at

1. はじめに

前回の記事 ではGitBucketのWeb APIを利用してIssueを取得し、Jsonファイルとして保存する方法について説明しました。今回はxlsxwriterというライブラリを利用して、保存したJsonファイルのデータからExcelファイルを出力する方法について説明します。

2. xlsxwriterのインストール

xlsxwriterのインストールはpipで簡単に行うことができます。

pip install xlsxwriter

ソースコードはGitHub に公開されています。
ソースコードからビルドしたい方はリポジトリをcloneした後、python setup.py installコマンドでインストールしてください。

3. ソースコード

excelApps.py
# -*- 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帳票の作成についても記事にできればと思います。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?