Pythonにはエクセルのxlsxファイルを操作するモジュールが数多くあるのですが、どれも甲乙付けがたい状態です。
その中でも比較的使いやすいと私が感じた「読み込みも書く込みもできる」openpyxlの使い方を書きます。
xlsxデータの読み込み
import openpyxl #---------------------- # xlsxファイルのロード方法 wb = openpyxl.load_workbook(filename="base.xlsx",data_only = False) #---------------------- # シートの名前を取得する print(wb.get_sheet_names()[0]) #---------------------- # シートを名前から取得 ws = wb.get_sheet_by_name(wb.get_sheet_names()[0]) #---------------------- # シートの縦横の最大値を取得 print("横",ws.max_column) print("縦",ws.max_row) #---------------------- for y in range(0,ws.max_row): for x in range(0,ws.max_column): print(ws.cell(column = x+1,row = 1+y).value) ws.cell(column = x+1,row = 1+y).value="abc" print(ws.cell(column = x+1,row = 1+y).value) print((1+y),"行目が終わりました") #---------------------- #別の名前で保存する wb.save("save.xlsx")
.xlsxファイルを読み書きするには、まずimport openpyxlします。
xlsxファイルのロード方法
wb = openpyxl.load_workbook(filename="base.xlsx",data_only = False)
ワークブックオブジェクト = openpyxl.load_workbook(filename= ファイル名 ,data_only = FalseかTrue )
filenameに開くxlsxファイルの名前、data_onlyにTrueを入れるとデータだけを、Falseを入れると関数なども取得できます。
シートの名前を取得する方法
print(wb.get_sheet_names()[0])
ワークブックオブジェクト.get_sheet_names()
返値としてシート名のリストが配列で返ってきます。
ary=wb.get_sheet_names()
といった感じで受け取る事もできます。
シートを名前から取得する方法
ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])
シートオブジェクト=ワークブックオブジェクト.get_sheet_by_name( シート名 )
シート名を指定してシートのオブジェクトが取得できます。
シートのセルにアクセスする方法
ws.cell(column = x+1,row = 1+y).value="abc"
シートオブジェクト.cell(column = 横 ,row = 縦 ).value
セルの中身を参照する事ができます。
columnとrowは1が最小値で、両方1の場合はA1のセルが参照されます。
xlsxファイルのセーブ方法
wb.save("save.xlsx")
ワークブックオブジェクト.save( ファイル名 )
ワークブックオブジェクトをファイル名で保存します。