Python エクセルファイルを直接扱う #2
株式会社リュディアです。今回も Python からエクセルファイルを直接読み書きする方法についてまとめます。
前回までの Python でエクセルファイルを直接扱うことについてのまとめへのリンクは以下を参考にしてください。
前回は xlrd で読み込みを行いましたので、今回は xlwt で書き込みを行います。今回の xlwt を読まれる前に必ず xlrd のまとめを見てください。制約条件等についても記載していますので必ず事前に一読ください。
今回は xls から読み込んだ情報を他の xls ファイルに書き出すコードを用意しました。以下のコードを見てください。
import xlrd
import xlwt
book = xlrd.open_workbook('note_read_sample.xls')
print(book.sheet_names())
sheet = book.sheet_by_name('Sheet1')
cell_c_3 = sheet.cell(2, 3)
cell_5_0 = sheet.cell(5,0)
wbook = xlwt.Workbook()
wsheet = wbook.add_sheet('wsample')
for v in range(sheet.nrows):
for h in range(sheet.ncols):
wsheet.write(v, h, sheet.cell(v,h).value)
wbook.save('note_write_sample.xls')
前半の読み出しの処理は前回の記事を参考にしてください。後半の書き込みの処理について説明します。
最初はファイルの open からです。読み出しのときは xlrd.open_book でしたが、書き込みの場合は xlwt.Workbook というメソッドになります。注意してください。そのあと書き込みを行いたいシートをシート名 wsample として追加しています。最後にデータを二重ループで新しいファイルの新しいシートに書き込みしています。相当にベタな二重ループですが、今回はむき出しにしてわかりやすさを優先にしました。最後に wbook.save( ) で保存します。
結果は以下のようになりました。シートの名前も wsample になっていることが確認できますね。
今回は xlwt による xls への書き込みを行いました。これで Python でエクセルファイルを直接読み書きできるようになりました。
正直な話をすると CSV 形式でエクセルファイルを保存して、その CSV ファイルを Python で扱う方が安全ではあります。しかし CSVファイルの説明が必要なレベルの人に使ってもらう Python アプリを作る場合にはエクセルファイルを直接読み書きできる必要があります。
では、ごきげんよう。