2011年3月16日水曜日

pythonで計画停電ExcelをCSV形式に変換

東京電力のホームページから停電時のxlsファイルをDLしてCSVファイルに出力するプログラムをpython2.7(Linux環境)で作成しました。今、少しpythonを勉強中なんで、やってみました。

基本はココ を参考にしました。すこーしだけ改造してます。
Excelファイルが操作可能なpyExceleratorをインポートしてCSVにそのまま出力しています。

xls2csv.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, csv
import pyExcelerator

def xls_to_csv( xls_file, csv_file ):
    xls_sheets = pyExcelerator.parse_xls( xls_file )

    #for sheet_id in xls_sheets:
    cell_dict = xls_sheets[0][1]

    # set limitter row_max and column_max
    for which in (0, 1):
        exec ("""%s = max([cell_dict.keys()[key_index][which]"""
              """ for key_index in xrange(len(cell_dict.keys()))] )""") % \
                ["row_max", "column_max"][which]

    # creating csv file.
    create_csv = csv.DictWriter(file(csv_file, "ab"),
                                fieldnames=range(column_max+1) )
    for row in xrange(row_max+1):
        create_csv.writerow(dict(
                enumerate([unicode (cell_dict.copy().get((row, column), '')).encode ('utf-8')
                            for column in xrange(column_max+1)])))

if __name__ == "__main__":
    xls_to_csv( sys.argv[1], sys.argv[2] )


でもって、以下が東京電力のホームページからExcelファイルをダウンロードして↑のオブジェクトをインポートしてCSVに出力する元のプログラム。


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import xls2csv
import urllib

def xls_get():
    list = ['tochigi','ibaraki','gunma','chiba','kanagawa','tokyo','saitama','yamanashi','numazu']
    filepath = './data/'
    urla = 'http://www.tepco.co.jp/images/'
    for row in list:
        xlsname = row + '.xls'
        csvname = row + '.csv'
        urllib.urlretrieve(urla + xlsname, filepath + xlsname)
        xls2csv.xls_to_csv(filepath + xlsname, filepath + csvname)

if __name__ == "__main__":
    xls_get()

 完成した出力CSVファイルが以下(いつ消すかわかりませんがw) 
栃木茨城群馬千葉神奈川東京埼玉山梨静岡

アプリケーション開発する上でExcelファイルって結構扱いが微妙で、似た形式ならCSVに落とす方がやりやすいんですよね。

まぁ、使えるかどうかは微妙ですけどw






0 件のコメント: