2009年09月10日
python excel操作 -読み書き編-
昨日書いた「python excel操作 -book作成編-」の続きです。
昨日、自らに課した宿題であるファイルの読込。
これは以外と簡単にできました。
しかし、ファイル読込→編集→保存がうまくいかず・・・
そこで色々調べてみると、「pyExcelerator」よりも
「xlutils」・「xlwt」・「xlrd」というモジュールの方が使い勝手が良さそうです。
内訳としては、
となっています。
これらの組み合わせで、ファイル読込→編集→保存が実現できましたので
今後使用するモジュールは決まりですかね。
これらのモジュールは以下からダウンロード出来ます。
http://pypi.python.org/pypi/xlutils
ではサンプルです。
昨日、自らに課した宿題であるファイルの読込。
これは以外と簡単にできました。
しかし、ファイル読込→編集→保存がうまくいかず・・・
そこで色々調べてみると、「pyExcelerator」よりも
「xlutils」・「xlwt」・「xlrd」というモジュールの方が使い勝手が良さそうです。
内訳としては、
xlutils : ファイルのコピーや色々w(調査中
xlwt : ファイルの編集・保存
xlrd : ファイルの読込
となっています。
これらの組み合わせで、ファイル読込→編集→保存が実現できましたので
今後使用するモジュールは決まりですかね。
これらのモジュールは以下からダウンロード出来ます。
http://pypi.python.org/pypi/xlutils
ではサンプルです。
=目的=
sample.xlsを開き、内容を読込⇒コピー⇒編集⇒保存する。
↓sample.xlsの中身はこんな感じです。シート名は[Test Sheet]↓
どうでしょうか?
かなり簡単にできますね!
これでoracle等と接続してデータをExcelで管理なども出来そうです。
次回はもう少し実務に使えそうな事を調べてみます。
{a8.net http://books.livedoor.com/item/3222406}{a8.net http://books.livedoor.com/item/3247473}
sample.xlsを開き、内容を読込⇒コピー⇒編集⇒保存する。
↓sample.xlsの中身はこんな感じです。シート名は[Test Sheet]↓
# -*- coding: utf-8 -*-
import xlrd
import xlwt
book = xlrd.open_workbook("sample.xls") #sample.xlsの読込
print "シート数:", book.nsheets #シートの数
print "シート明細:", book.sheet_names() #シート明細
sh = book.sheet_by_index(0) #最初のシート読込
print sh.name, sh.nrows, sh.ncols #シート名・シート内MAX行数・シート内MAX列数
#こう出力されます⇒「Test Sheet 14 7」 行列数は0始まりではない事に注意!
print "セル A3 is", sh.cell_value(rowx=2, colx=0) #セルA3の値が見たいとき
↑ここは0始まり!
#エクセル編集モジュール呼び出し
wb = xlwt.Workbook()
#編集モジュールの指定。読込シートと同名で上書。別名でシート追加。
#ここでは上書きとする
ws = wb.add_sheet('Test Sheet')
#読込シートの中身を行と列の数分ループする
for rx in range(sh.nrows):
for lx in range(sh.ncols):
nRow = rx #行番号保持(必須ではない
nLin = lx #列番号保持(必須ではない
ws.write(nRow, nLin, sh.cell_value(rowx=nRow, colx=nLin)) #指定セルに書込
#おまけ@:シートの追加と書き込み
#シート[Test Sheet2]を追加し、以下の値を設定
ws2 = wb.add_sheet('Test Sheet2')
ws2.write(1, 1, "a")
#ファイルの保存(上書き保存)
wb.save("sample.xls")
#おまけA:保存ファイル名を変えればミラーコピーできます。
wb.save("sample2.xls")
どうでしょうか?
かなり簡単にできますね!
これでoracle等と接続してデータをExcelで管理なども出来そうです。
次回はもう少し実務に使えそうな事を調べてみます。
{a8.net http://books.livedoor.com/item/3222406}{a8.net http://books.livedoor.com/item/3247473}
⊆ ランキングに参加してみました!応援お願いします ⊇
【蛇の最新記事】
この記事へのコメント