基本はココ を参考にしました。すこーしだけ改造してます。
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] )
# -*- 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()
# -*- 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 件のコメント:
コメントを投稿