
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( ファイル名 )
ワークブックオブジェクトをファイル名で保存します。