ネットワーク上のExcelファイルをPythonで直接読み込む(xlrd)
先日、パッケージ管理システム『pip』をインストールしていたので、Python で Excel ファイルを 読み/書きするためのパッケージ xlrd, xlwt, xlutilsをpipでインストールする。
pip install xlrd xlwt xlutils
2.Pythonでネットワーク上のExcelファイルを直接読み込んで、セルの中身をそのままリストしてみる。
以下のテキストをexcel.pyとして保存し、
#!/usr/bin/env python # -*- coding: utf-8 -*- import xlrd import urllib def read_xls(url): web = urllib.urlopen(url) webdata = web.read() web.close() book = xlrd.open_workbook(file_contents=webdata) sheet_1 = book.sheet_by_index(0) print 'sheet_name=', sheet_1.name.encode('utf-8') print 'ncols=', sheet_1.ncols print 'nrows=', sheet_1.nrows for col in range(sheet_1.ncols): print "----------------------------" for row in range(sheet_1.nrows): cell=sheet_1.cell(row,col) if cell.ctype == xlrd.XL_CELL_TEXT: print 'col=', col, 'row=', row, cell.value.encode('utf-8') else: print 'col=', col, 'row=', row, cell.value if __name__ == '__main__': import sys if len( sys.argv ) > 1: url = sys.argv[1] read_xls(url)
コマンドラインから
./excel.py 'http://www.soumu.go.jp/johotsusintokei/field/data/gt010601.xls'
と打つと、総務省「分野別データ:通信:国際比較」のページ(http://www.soumu.go.jp/johotsusintokei/field/tsuushin08.html)にある「世界のインターネット利用者総数の推移」のExcel ファイル(http://www.soumu.go.jp/johotsusintokei/field/data/gt010802.xls)を直接読み込んで1シート目の各セルの値が、以下の形でプリントされます。
sheet_name= 世界のインターネット利用者総数の推移 ncols= 16 nrows= 7 ---------------------------- col= 0 row= 0 世界のインターネット利用者総数の推移 col= 0 row= 1 col= 0 row= 2 col= 0 row= 3 利用者総数 col= 0 row= 4 col= 0 row= 5 col= 0 row= 6 (出典)「ITU Internet Report 2006: digital life」等 ---------------------------- col= 1 row= 0 col= 1 row= 1 col= 1 row= 2 1991年 col= 1 row= 3 4.0 col= 1 row= 4 col= 1 row= 5 col= 1 row= 6 ---------------------------- col= 2 row= 0 col= 2 row= 1 col= 2 row= 2 1992年 col= 2 row= 3 7.0 col= 2 row= 4 col= 2 row= 5 col= 2 row= 6 ---------------------------- col= 3 row= 0 col= 3 row= 1 col= 3 row= 2 1993年 col= 3 row= 3 10.0 col= 3 row= 4 col= 3 row= 5 col= 3 row= 6 ---------------------------- col= 4 row= 0 col= 4 row= 1 col= 4 row= 2 1994年 col= 4 row= 3 21.0 col= 4 row= 4 col= 4 row= 5 col= 4 row= 6 ---------------------------- col= 5 row= 0 col= 5 row= 1 col= 5 row= 2 1995年 col= 5 row= 3 40.0 col= 5 row= 4 col= 5 row= 5 col= 5 row= 6 ---------------------------- col= 6 row= 0 col= 6 row= 1 col= 6 row= 2 1996年 col= 6 row= 3 74.0 col= 6 row= 4 col= 6 row= 5 col= 6 row= 6 ---------------------------- col= 7 row= 0 col= 7 row= 1 col= 7 row= 2 1997年 col= 7 row= 3 117.0 col= 7 row= 4 col= 7 row= 5 col= 7 row= 6 ---------------------------- col= 8 row= 0 col= 8 row= 1 col= 8 row= 2 1998年 col= 8 row= 3 145.0 col= 8 row= 4 col= 8 row= 5 col= 8 row= 6 ---------------------------- col= 9 row= 0 col= 9 row= 1 col= 9 row= 2 1999年 col= 9 row= 3 235.0 col= 9 row= 4 col= 9 row= 5 col= 9 row= 6 ---------------------------- col= 10 row= 0 col= 10 row= 1 col= 10 row= 2 2000年 col= 10 row= 3 390.0 col= 10 row= 4 col= 10 row= 5 col= 10 row= 6 ---------------------------- col= 11 row= 0 col= 11 row= 1 col= 11 row= 2 2001年 col= 11 row= 3 496.0 col= 11 row= 4 col= 11 row= 5 col= 11 row= 6 ---------------------------- col= 12 row= 0 col= 12 row= 1 col= 12 row= 2 2002年 col= 12 row= 3 623.0 col= 12 row= 4 col= 12 row= 5 col= 12 row= 6 ---------------------------- col= 13 row= 0 col= 13 row= 1 col= 13 row= 2 2003年 col= 13 row= 3 688.0 col= 13 row= 4 col= 13 row= 5 col= 13 row= 6 ---------------------------- col= 14 row= 0 col= 14 row= 1 col= 14 row= 2 2004年 col= 14 row= 3 875.0 col= 14 row= 4 col= 14 row= 5 col= 14 row= 6 ---------------------------- col= 15 row= 0 col= 15 row= 1 (百万人) col= 15 row= 2 2005年 col= 15 row= 3 965.0 col= 15 row= 4 col= 15 row= 5 col= 15 row= 6