pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、アクティブセルの設定と表示倍率に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。
納品書だったり、見積だったり、発注書だったり
一つの企業様に様々な書類を纏めて送る場合もあると思います
作成中は倍率を変更していたりするので
発送する前に体裁を整える場合も多いと思います。
今回はサンプルと言う名前のブックにある全てのシートを
決められたセル(今回はアクティブセルをA1)、
元の倍率(今回は100%)に整えるコードを記述してみます。
最終的なコード
from openpyxl import load_workbook
wb = load_workbook('サンプル.xlsx')
cell_no = 'A1'
zoom_scale = 100
# 全シートを取得して1シートずつ設定
for ws in wb.worksheets:
sv = ws.sheet_view
# アクティブセルを'A1'に設定
sv.selection[0].activeCell = cell_no
sv.selection[0].sqref = cell_no
sv.selection[0].activeCellId = None
# 表示倍率を100%に設定
sv.zoomScale = zoom_scale
sv.zoomScaleNormal = zoom_scale
wb.save('サンプル_修正.xlsx')
アクティブセルに関しては
activeCell属性を設定すると同時に、sqref属性と、activeCellIdを
表示倍率に関しても
zoomScale属性を設定すると同時に、zoomScaleNormal属性を
それぞれ設定しておいた方が良いようです。
ブック内の情報整合性を保つために必要な様なのですが、
「なぜか」にたどり着けず、もやもやしている状態です。
今は、セットで変更するものと覚えておいて、理由が理解出来たら追記したいと思います。