【PYTHONメモ】エクセル 罫線を含んだ行挿入

PYTHON

エクセルシートの罫線を含んだ行挿入の方法です。

Pythonで既存のエクセルシートにデータを追記する時に罫線も考慮しなければなりません。今回紹介する方ですと簡単に同じスタイルの罫線が複製されます。

通常の行の挿入の問題点

4行目に行を挿入するコードになります。しかしこれでは問題があります。

import openpyxl

filename = "C:/Labo/sheetfile4.xlsx"
filename2 = "C:/Labo/sheetfile5.xlsx"

wb1 = openpyxl.load_workbook(filename)
ws = wb1.worksheets[0]

ws.insert_rows(4)

wb1.save(filename2)

それは罫線がコピーされないのです。

罫線を含めてコピーする

下記のコードを使えば簡単に罫線の付いた行を挿入できます。

import openpyxl
from copy import copy

filename = "C:/Labo/sheetfile4.xlsx"
filename2 = "C:/Labo/sheetfile5.xlsx"

wb1 = openpyxl.load_workbook(filename)
ws = wb1.worksheets[0]

ws.insert_rows(4)

i = 1

for row in ws.iter_rows():
    for cell in row:
        if cell.row == 3:
            ws.cell(row=4, column=i).border = copy(cell.border)
            i = i + 1

wb1.save(filename2)

4行目は罫線が付いた行が挿入されます。

下記のコードは3行目の罫線のスタイルを4行目にコピーしています。

        if cell.row == 3:
            ws.cell(row=4, column=i).border = copy(cell.border)

気を付けたいのは2行目もしくは5行目の罫線をコピーすると上側もしくは下側の罫線もコピーされています。

そのため、上下に罫線が付いていない行をコピーするというのが簡単に罫線を追加するカラクリになります。

 

PYTHON
スポンサーリンク
シェアする
フォローする

コメント

タイトルとURLをコピーしました