ミニプログラム

SQLiteからデータを取得して、Excelに変換するプログラム

SQLiteからデータを取得して、それをExcelに書き出して出力するミニプログラムです。

データベースのデータを分析するためにExcelに書き出したい場合に役に立ちます。

今回はSQLiteからデータを取得するためにsqlite3、Excelへの書き出しにopenpyxlを使います。

SQLiteの記事はこちら

openpyxlの記事はこちら

sqlite3はpythonの標準モジュールですが、openpyxlはインストールする必要があります。pip等を使ってインストールしましょう。

$ pip install openpyxl

また、今回は東京の1ヶ月の平均気温、最高気温、最低気温をテーブルに格納し、それをsqlite3で取得しExcelへ書き出します。

データのサンプルはこちらです。

input.csv
import sqlite3
import openpyxl

workbook = openpyxl.Workbook()
sheet = workbook.active
sheet['A1'].value = '年月日'
sheet['B1'].value = '平均気温'
sheet['C1'].value = '最高気温'
sheet['D1'].value = '最低気温'

db = sqlite3.connect('example.db')
c = db.cursor()
c.execute('SELECT * FROM temperature')
for i, row in enumerate (c):
    sheet['A' + str(i+2)].value = row[0] #年月日
    sheet['B' + str(i+2)].value = row[1] #平均気温
    sheet['C' + str(i+2)].value = row[2] #最高気温
    sheet['D' + str(i+2)].value = row[3] #最低気温

c.close()
workbook.save(“output.xlsx")

4行目〜5行目の処理でで新しいExcelのワークブックを作成しています。

Workbook()はワークブックの初期化です。

6〜9行目はExcelの最初の行にヘッダーを記述するための処理です。

openpyxlではsheet[セル番号].valueに値を入れることでそのセルに値を書き出せます。

11行目からはデータベースからデータを取得し、結果をExcelに書き出しています。

まず11行目でexample.dbに接続しています。ここは接続するSQLiteのデータベースファイル名によって異なります。

13行目ではSQLを使ってtemperatureテーブルからデータを全件取得し、結果をc変数に格納しています。

あとは受け取った結果をforでループさせ、sheet[セル番号].valueに一つずつ値を渡しています。

enumerateを使うことでインデックス番号を受け取れるので、それを使ってセル番号を指定できます。

最後に開いたカーソルをクローズし、workbook.save()で内容をoutput.xlsxに出力しています。

タイトルとURLをコピーしました