3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】Worksheet.merge_cellsメソッドを使って、セルを結合する。

Posted at

pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、セルの結合に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

image.png

上記のようなブック「表」を

image.png

の様な年のセルを結合したいです。

Worksheet.merge_cellsメソッド

ws.merge_cells(start_row=開始の行番号, start_column=開始の列番号,
               end_row=終了の行番号, end_column=終了の列番号)

セルの結合は上記のようにWorksheet.merge_cellsメソッドを使うのですが
ここで気を付けるのは列番号で、
A,B,C・・・ではなく、1,2,3・・・のように数値を設定します。

最終的なコード

from openpyxl import load_workbook
from openpyxl.styles import Alignment, Border, PatternFill, Side

wb = load_workbook('表.xlsx')
ws = wb.active

green_fill = PatternFill(fgColor='C6E0B4', fill_type='solid')
center_alignment = Alignment(horizontal='center')
black_thin = Side(color='000000', border_style='thin')
border = Border(left=black_thin, right=black_thin,
                top=black_thin, bottom=black_thin)

row_no = 2
start = 5
end = 16

# セルを結合
ws.merge_cells(start_row=row_no, start_column=start,
               end_row=row_no, end_column=end)

# 結合したセルの塗りつぶし
ws.cell(row_no, start).fill = green_fill

# 結合したセルの文字配置
ws.cell(row_no, start).alignment = center_alignment

# 結合したセルの罫線
for column_no in range(start, end+1):
    ws.cell(row_no, column_no).border = border

wb.save('表_結合.xlsx')

ここでも、注意点があります。

罫線の設定は結合したセルすべてに対して設定する必要があるということです。

何気に見落としがちなので注意した方が良いです。
(私は???ってなってました。)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?