OpenPyXlの基本操作をまとめてみた。
#####OpenPyXlでExcelファイルを開く
import openpyxl
wb = openpyxl.load_workbook('example.x‐lsx')
#####Workbookからシートを取得
my_sheetnames = wb.sheetnames # return list object
sheet = wb[my_sheetnames[0]] # sheet[0] for example
#####シート名を文字列として取得
my_titles = sheet.title
#####アクティブなシートを取得
anotherSheet = wb.active
#####シートからセルを取得
cell_A1 = sheet['A1']
#####セルから値を取得
cell_A1_value = sheet['A1'].value
#####セルから行列情報を取得
cell_A1_row = sheet['A1'].row
cell_A1_column = sheet['A1'].column
cell_A1_coordinate = sheet['A1'].coordinate
area_cells = sheet['A1':'C3'] #複数セル範囲を指定して取得
#####列の挿入
sheet.insert_rows(7)
#####セル範囲の移動(※セルは上書きされる)
sheet.move_range("D4:F10", rows=-1, cols=2)
#####グラフの作成
import openpyxl.chart #OpenPyXlからChartをインポート
wb_chart = openpyxl.Workbook() #ワークブックを指定
sheet_chart = wb_chart.active #アクティブなシートを指定
for i in range(1, 11):
sheet_chart['A' + str(i)] = i
refObj = openpyxl.chart.Reference(sheet‐_chart, min_col=1, min_row=1, max_col=1, max_row=10) #グラフ範囲を指定
seriesObj = openpyxl.chart.Series(refObj, title='First series')
chartObj = openpyxl.chart.BarChart() #棒グラフを指定
chartObj.title = 'My Chart' #グラフタイトルを指定
chartObj.append(seriesObj) #グラフを追加
sheet_chart.add_chart(chartObj, 'C5') #C5セルにグラフを追加
wb_chart.save('sampleChart.xlsx') #名前を付けてグラフを保存
#####行列を指定してセルを取得
cell_B1 = sheet.cell(row=1, column=2)
#.valueを付加することでセルの値を取得
#####列の最大値を取得
sheet_max_row = sheet.max_row
#####行の最大値を取得
sheet_max_column = sheet.max_column
#####行列を変換
from openpyxl.utils import get_column_l‐etter, column_index_from_string #行列変換用ライブラリを取得
col_letter = get_column_letter(1)
col_max_letter = get_column_letter(she‐et.max_column)
index_letter = column_index_from_string‐('A') #Aの数値を取得
#####セルの結合および結合解除
wb_merge = openpyxl.Workbook()
sheet_merge = wb_merge.active
sheet_merge.merge_cells('A1:D3')
#####結合したセルに数値を設定
sheet_merge[‘A1’] = 'Twelve cells merged together.'
sheet_merge.merge_cells('C5:D5')
sheet_merge['C5'] = 'Two merged cells.'
wb_merge.save('merged.xlsx')
#####結合したセルを解除
wb_unmerge = openpyxl.load_workbook('‐merged.xlsx')
sheet_unmerge = wb_unmerge.active
sheet_unmerge.unmerge_cells('A1:D3')
sheet_unmerge.unmerge_cells('C5:D5')
wb_unmerge.save('unmerged.xlsx')
#####シートの作成・削除
wb_new.create_sheet() #シートを新規追加
wb_new.create_sheet(index=0, title='Firstsheet') #指定の場所にシートを新規追加
wb_new.create_sheet(index=2, title='Middle sheet') #指定の場所(index2)に名前を付けてシートを追加
del wb_new['Middle sheet']
#####セルに文字列の代入
sheet_new['A1'] = 'Hello, world!'
print(sheet_new['A1'].value)
#####フォントの変更
from openpyxl.styles import Font
wb_style = openpyxl.Workbook()
sheet_style = wb_style['Sheet']
italic24Font = Font(size=24, italic=True, name=‘Calibri’) #フォント作成
sheet_style['A1'].font = italic24Font #フォントをA1セルに適用
sheet_style['A1'] = 'Hello, world!'
wb_style.save('styles.xlsx')
#####数式の導入
wb_formulas = openpyxl.Workbook()
sheet_formulas = wb_formulas.active
sheet_formulas['A1'] = 200
sheet_formulas['A2'] = 300
sheet_formulas['A3'] = '=SUM(A1:A2)' #数式を適用
wb_formulas.save('writeFormula.xlsx')
#####行列の高さ・幅を設定
wb_dimension = openpyxl.Workbook()
sheet_dimension = wb_dimension.active
sheet_dimension['A1'] = 'Tall row'
sheet_dimension['B2'] = 'Wide column'
sheet_dimension.row_dimensions[1].height = 70 #高さを指定
sheet_dimension.column_dimensions‐['B'].width = 20 #幅を指定
sheet_dimension.column_dimensions‐['C'].hidden = True #Cを非表示
wb_dimension.save('dimensions.xlsx')
#####セルの固定
wb_freeze = openpyxl.load_workbook('pro‐duceSales.xlsx')
sheet_freeze = wb_freeze.active
sheet_freeze.freeze_panes = 'A2' #A2セルより上を固定
wb_freeze.save('freezeExample.xlsx')
##参照元
openPyXL_cheatsheet Cheat Sheet by Dima via
https://cheatography.com/dima/cheat-sheets/openpyxl-cheatsheet/
openpyxl による Excelファイル操作方法のまとめ
https://gammasoft.jp/support/how-to-use-openpyxl-for-excel-file/
OpenPyXl公式(英語)
https://openpyxl.readthedocs.io/en/stable/
##参考
YouTubeで「Pythonを使った事務処理の効率化」というタイトルで、OpenPyXlを紹介。