LoginSignup
7

More than 3 years have passed since last update.

Python3 openpyxlを使って楽にExcelファイルを操作しよう

Last updated at Posted at 2018-04-08

はじめに

設計書だったり(使い方的には間違っていますが)なんかの仕様書なんかをExcelで作って納品するということがある方も多いかもしれません。
退屈なことはPythonにやらせよう(by オライリー)ということでPython勉強ついでにExcelファイルをぱぱっと操作出来るようになろうという一貫です。

2019/09/30 アップデート
社内で機能追加依頼があったので、機能追加しました。
Pythonバージョンを3.6から3.7にアップデートしました。
Openpyxlバージョンを2.5.1から3.0.0にアップデートしました。
ファイル名が英名のみの対応となっていたのを日本語も対応するようにアップデートしました。

今回やること

納品作業する際に手作業するのは何かと考えた際に思いついたことが2つあったので、今回はそれを達成したいと思います。

・全てのシートのフォーカスをA1の指定する
・アクティブシートを先頭シートにする
・表示倍率を全て100%(2019/09/30追加)
・全てのシートを表示状態に変更(2019/09/30追加)

前提として納品対象のExcelファイルが格納されているフォルダはPythonファイルが同じフォルダに存在しているとします。

環境(2019/09/30追加)

Python 3.7.2_2
openpyxl 3.0.0 https://pypi.python.org/pypi/openpyxl

コード

import openpyxl
import os
import re
path = "."
files = os.listdir(path)
excel_files = [file for file in files if os.path.isfile(os.path.join(path, file)) and re.compile(r"^(.*).(xls|xlsx)").match(file)]
for file in excel_files:
    wb = openpyxl.load_workbook(file)
    sheet_names = wb.sheetnames
    for sheet_name in sheet_names:
        sheet = wb[sheet_name]
        sheet.sheet_view.selection[0].activeCell = 'A1'
        sheet.sheet_view.selection[0].sqref = 'A1'
        sheet.sheet_view.tabSelected = False
        sheet.sheet_view.zoomScale = 100
        sheet.sheet_view.zoomScaleNormal = 100
        sheet.sheet_state = 'visible'
    wb.active = 0
    wb.save(file)

最後に

コード書いてみたら本当に簡単にアクセスすることが出来ました。
基本的な操作は特にはまることなく操作可能になる感じはしますが、やれることが多く様々なことに対応することが出来そうでもあります。
納品作業みたいな簡単な作業だけではなく、帳票なんかもこれで作れそうです。

簡単すぎてPythonの勉強にはほとんどなりませんでしたが、良いLibrayを知りました。

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
7