仕事でopenpyxl を使い始め、行挿入の方法を探していたが以前のバージョンではどうやら実装されておらず
ブックコピー時に挿入する方法しか検索できなかったが、2.5.0から追加された模様(歓喜
ググっても公式以外に記載が見つからなかった。
■A Python library to read/write Excel 2010 xlsx/xlsm files
http://openpyxl.readthedocs.io/en/stable/search.html?q=insert+rows&check_keywords=yes&area=default
2.5.0 (2018-01-24) (from project openpyxl)
styles with custom names Major Changes You can now insert and delete rows and columns in worksheets
■インストール
pip3 install openpyxl -t .
■行挿入
import openpyxl
#エクセルファイル
XLSFile="C:\\temp\\なんとかエクセルファイル.xlsx"
#ファイルオープン
wb = openpyxl.load_workbook(XLSFile)
#シート名'template'取得
ws_template = wb["template"]
#挿入行数(10行目に挿入)
SheetRowNo=10
#行挿入
ws.insert_rows(SheetRowNo)
#ファイル保存
wb.save(XLSFile)
■備考
エクセルに =Sum(A1:B1) 等の計算マクロが入っている場合、自動的に対象の列行修正は行われないのが難点。
例)セルA1に「100」A2に「200」A3に「=Sum(A1:A2)」が入ってるエクセルに対し、
通常エクセルで2行目に行挿入を行った場合、A4に移動したマクロは「=Sum(A1:A3)」と自動的に変わるが
上記にて2行目に行挿入( ws.insert_rows(2) )を行った場合、「=Sum(A1:A2)」のまま変わらない。