「python openpyxl offset」
といった検索でアクセスがありました。
OpenPyXLのoffset属性またはoffset()メソッドについて調べていらしたのでしょうか。
何を調べていらしたのかこのキーワードだけでは不明ですが、まず理解すべきなのはCellオブジェクトのoffset()メソッドです。
OpenPyXLのCell.offset()メソッドの基本を確認するサンプル
以下のスクリプトを実行すると、Cell.offset()メソッドの基本を確認できます。
bk = xl.Workbook()
ws = bk.worksheets[0]
c3_cell = ws['C3']
c3_cell.value = '基準セル'
c3_cell.offset(0, 1).value = '(0, 1)'
c3_cell.offset(0, -1).value = '(0, -1)'
c3_cell.offset(1, 0).value = '(1, 0)'
c3_cell.offset(-1, 0).value = '(-1, 0)'
c3_cell.offset(1, 1).value = '(1, 1)'
c3_cell.offset(-1, -1).value = '(-1, -1)'
centering = xl.styles.Alignment(horizontal='center')
for row in ws['B2:D4']:
for cel in row:
cel.alignment = centering
上記のスクリプトを実行すると、「Sheet」シートに下図のように入力されたoffset.xlsxブックが、Cドライブtempフォルダーに作成されます。
Cell.offset()の引数にはオフセット量を整数で指定
Cellオブジェクトのoffset()メソッドは、基準のセルから、オフセットしたセルを取得するためのメソッドです。
第1引数には何行オフセットするか、第2引数には何列オフセットするかを整数で指定します。
正の整数を指定した場合は右方向や下方向にオフセットし、
負の整数を指定した場合は左方向や上方向にオフセットしたセルを取得できます。
「.offset(0, 1)」と指定した場合、行は変更せずに、列だけを右方向に1つオフセットしたセルを取得できます。
それを行っているのが上記スクリプトの、
c3_cell.offset(0, 1).value = '(0, 1)'
です。
「.offset(0, -1)」と指定した場合、行は変更せずに、列だけを左方向に1つオフセットしたセルを取得できます。
それを行っているのが上記スクリプトの、
c3_cell.offset(0, -1).value = '(0, -1)'
です。
「.offset(1, 0)」と指定した場合、行だけを下方向に1つオフセットしたセルを取得できます。
それを行っているのが上記スクリプトの、
c3_cell.offset(1, 0).value = '(1, 0)'
です。
以下のコードを実行すると、どのセルに「(0, 2)」と入力されるか考えてから実行してみてください。
c3_cell.offset(0, 2).value = '(0, 2)'
Cell.alignment属性で中央揃えに
上記スクリプトの最後のほうで行っている
centering = xl.styles.Alignment(horizontal='center')
for row in ws['B2:D4']:
for cel in row:
cel.alignment = centering
は、Cellオブジェクトのalignment属性とopenpyxl.sytles.Alignmentオブジェクトを使って、B2:D4セルを左右中央揃えにする処理で、Cell.offset()メソッドとは関係ありません。
最終更新日時:2023-05-23 09:11
- Newer:可視行のみをFor Each~Nextループで処理する-SpecialCells(xlCellTypeVisible).Rows
- Older:xlwingsでアクティブでないシートの値を取得する
Home » Python » OpenPyXLの使い方 » OpenPyXLのCell.offset()メソッドの基本