今すぐ役立つ【Python】と【openpyxl】 の組み合わせでエクセル仕事の効率化!

Python

Pythonを使用することでExcel(エクセル)を簡単に読み書きすることができます。 実際にPythonを業務で使用するときに、効率化が最もわかりやすいのがExcelの操作になるので、その基本的な操作やライブラリをインストールする方法を紹介します。

Pythonを使ってエクセルを操作する

PythonでExcel(エクセル)を操作するには大きく分けると2つの方法があります。1つめの方法はExcelのファイルを直接操作してデータの読み書きを行う方法です。もう1つはPythonからWindowsを操作してExcelを起動させて、その上でPythonからの指令でデータを読み書きする方法で、イメージとしては、マウスやキーボードの操作を人間の代わりにPythonが自動操作する方法です。
前者の場合はパソコンにExcelがインストールされている必要はありません。後者の場合はパソコンにExcelがインストールされている必要があります。
どちらを使用するにしても、Pythonに新たにExcelを操作するためのライブラリのインストールが必要です。

エクセルライブラリ openpyxl のインストール方法

まずはライブラリをインストールする必要があります。ライブラリは先述のように操作する方法に応じてインストールします。一般的にPythonでExcel(エクセル)操作する場合は、ファイルを直接操作する事を意味するので、「openpyxl」をインストールします。「opnepyxl」を使用するメリットとしては、表中にも記載のようにExcelがインストールされている必要がないことです。業務に使用しているPCには一般的にエクセルがインストールされている事が多いと思いますが、安価なPCやRaspberry Pi等のLinux系のエッジ端末(5000円程度)を使用したい場合は、「openpyxl」を使用します。デメリットとしては、Excelの動作を完全にカバーしているわけではないので、一部には実現できない機能があります。しかし、一般的な機能は十分カバーしているので、基本は「openpyxl」を使用して、どうしてもカバーできない部分は「pywin32」を使用します。

操作方法ライブラリ名Excel(エクセル)要否
ファイルを直接読み書きするopenpyxl不要
Windowsのを操作してExcelを操作するpywin32(win32com)必要
エクセルライブラリw

Windowsでライブラリをインストールするには、メニューからw欄で出てくる「Windows PowerShell」を起動します。

Windows PowerShellを起動したら、次のコマンドを入力してリターンキーで実行します。「pip install -U ライブラリ名」コマンドは、Pythonのライブラリの最新版をインストールするコマンドです。

pip install -U openpyxl

いろいろなメッセージが表示されますが、最後に「Successfully installed openpyxl-*.*.**」と表示されればインストール成功です。

正しくインストールされたか確認してみましょう。次のコマンドをWindows PowerShellで、入力と実行をするとインストールしたバージョンが表示されます。

pip show openpyxl

下図の場合は、バージョン3.0.10がインストールされているのが確認できます。

openpyxlでエクセルのファイル操作

エクセルファイルの新規作成

それではPythonでExcel(エクセル)ファイルを作成してみましょう。次のコードを入力して実行すると、フォルダ内にExcelファイルが作成され、ファイルを開いてみると B2 セルに「テスト書き込み」という文字が書き込まれています。

import openpyxl as xls
book = xls.Workbook()
sheet = book.active
sheet["B2"] = "テスト書き込み"
book.save("testbook.xlsx")

作成されたエクセルファイルを確認すると、左記のようになっていると思います。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.Workbook()」は「book」という名前で、エクセルの新規ブックを作成しています。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet[“B2”] = “テスト書き込み”」は、取得したシートのB2セルに文字を書き込んでいます。

◆5行目の「book.save(“testbook.xlsx”)」は、作成したエクセルブックを「testbook.xlsx」という名前で保存しています。

ポイント
【まとめ】
ライブラリのインポート
import openpyxl as xls

新規ブックの作成
book = xls.Workbook()

シートの取得
sheet = book.active

セルへの書き込み
sheet["B2"] = "テスト書き込み"

ファイルの保存
book.save("ファイル名.xlsx")

エクセルファイルの読み込み

次にエクセルファイルを読み込んでみましょう。次のコードを入力して実行すると、「テスト書き込み」という文字列が表示されます。(読み込むファイルは、上で作成した testbook.xlsx です)

import openpyxl as xls
book = xls.load_workbook("testbook.xlsx")
sheet = book.worksheets[0]
cell = sheet["B2"]
print(cell.value)
テスト書き込み

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“testbook.xlsx”)」は、「testbook.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.worksheets[0]」は、これから操作するシートを指定しています。具体的には先頭のシートを指定しています。番号はシートを左から数えて何番目かを指定し、最も左の番号は「0」になります。

◆4行目の「cell = sheet[“B2”]」は、B2セルをオブジェクトとして取得しています。

◆5行目の「print(cell.value)」は、aという変数にB2セルの値を取得して入れています。

ポイント
【まとめ】
ライブラリのインポート
import openpyxl as xls

ファイルの読み込み
book = xls.load_workbook("ファイル名.xlsx")

シートの取得(いずれの方法でもOK)
sheet = book.active
sheet = book.worksheets[0]
sheet = book["シート名"]

セルの取得
cell = sheet["セル名"]

セルの値の取得(と表示)
print(cell.value)

openpyxlでエクセルの列操作

delete_cols(*) エクセルの列を1列削除する

openpyxlでエクセルの列を削除する事が出来ます。列の削除はdelete_colsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのB列を削除してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.delete_cols(2)
book.save("テスト03実行結果.xlsx")

プログラムを実行すると「テスト03実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとB列が削除されています(正確にはB列が削除され、元のC列以降が左に詰められています)。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.delete_cols(2)」でエクセルの列を削除しています。カッコ( )の中に削除したい列を指定する事で列を削除します。エクセルでは列の名前がA,B,C,・・・というようにアルファベットの名前が付けられていますが、openpyxlで列を指定する場合は一番左のA列を1として、数字で指定します。B列は2番目になるのでカッコ( )の中に2を指定しています。

◆5行目の「book.save(“テスト03実行結果.xlsx”)」は、作成したエクセルブックを「テスト03実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
削除する列はカッコ( )内に数字で指定する。A列を1として指定する。
sheet.delete_cols(削除列)

delete_cols(*,*) エクセルの列をまとめて削除する

openpyxlでエクセルの列をまとめて削除する事が出来ます。 まとめて列を削除する場合でもdelete_colsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのB列~D列の幅をまとめて削除してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.delete_cols(2,3)
book.save("テスト04実行結果.xlsx")

プログラムを実行すると「テスト04実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとB~D列が削除されています(正確にはB列~D列が削除され、元のE列以降が左に詰められています)。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.delete_cols(2,3)」でエクセルの列を削除しています。カッコ( )の中に削除したい列の開始列と何列分削除するかを指定する事で列をまとめて削除します。エクセルでは列の名前がA,B,C,・・・というようにアルファベットの名前が付けられていますが、openpyxlで列を指定する場合は一番左のA列を1として、数字で指定します。B列は2番目になるのでカッコ( )の中に2を指定しています。3列分削除するので続けて3を指定しています。

◆5行目の「book.save(“テスト04実行結果.xlsx”)」は、作成したエクセルブックを「テスト04実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
列をまとめて削除する場合は、削除開始列と削除列数をカッコ( )内に数字で指定する。A列を1として指定する。
sheet.delete_cols(削除開始列,削除列数)

insert_cols(*) エクセルの列を1列挿入する

openpyxlでエクセルの列を挿入する事が出来ます。列の挿入はinsert_colsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのC列の場所に列を挿入してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.insert_cols(3)
book.save("テスト05実行結果.xlsx")

プログラムを実行すると「テスト05実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとC列の場所に列が挿入されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.insert_cols(3)」でエクセルの列を挿入しています。カッコ( )の中に挿入したい列の場所を指定する事で列を挿入します。エクセルでは列の名前がA,B,C,・・・というようにアルファベットの名前が付けられていますが、openpyxlで列を指定する場合は一番左のA列を1として、数字で指定します。C列は3番目になるのでカッコ( )の中に3を指定しています。

◆5行目の「book.save(“テスト05実行結果.xlsx”)」は、作成したエクセルブックを「テスト05実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
列を挿入する時はカッコ( )内に挿入したい場所を数字で指定する。A列を1として指定する。
sheet.insert_cols(挿入場所)

insert_cols(*,*) エクセルの列をまとめて挿入する

openpyxlでエクセルの列をまとめて挿入する事が出来ます。 まとめて列を挿入する場合でもinsert_colsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのC列の場所に列を2列分まとめて挿入してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.insert_cols(3,2)
book.save("テスト06実行結果.xlsx")

プログラムを実行すると「テスト06実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとC列の場所に列が2列分挿入されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.insert_cols(3,2)」でエクセルの列を挿入しています。カッコ( )の中に挿入場所と挿入列数を指定する事で列を挿入します。エクセルでは列の名前がA,B,C,・・・というようにアルファベットの名前が付けられていますが、openpyxlで列を指定する場合は一番左のA列を1として、数字で指定します。C列は3番目になるのでカッコ( )の中に3を指定しています。2列分挿入していので、続けて2を指定します。

◆5行目の「book.save(“テスト06実行結果.xlsx”)」は、作成したエクセルブックを「テスト06実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
まとめて列を挿入する時はカッコ( )内に挿入したい場所と挿入列数を数字で指定する。A列を1として指定する。
sheet.insert_cols(挿入場所,挿入列数)

エクセルの列の幅を1列変更する column_dimensions[‘*’].width

openpyxlを使ってエクセルの列の幅を変更する事ができます。列の幅を変更は基本的に1列ずつ変更するコードを記述する必要がありますが、プログラムを工夫する事により簡単に複数列の幅を変更する事が出来ます。まずは1列ずつ変更する方法を説明します。column_dimensionsで列の幅を変更します。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのB列とC列の幅を変更してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.column_dimensions['B'].width = 20
sheet.column_dimensions['C'].width = 12
book.save("テスト01実行結果.xlsx")

プログラムを実行すると「テスト01実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとB列とC列の幅が変更されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。後半のdata_only=Trueは読み込み時のオプション指定で、エクセルではセルに計算式が設定されている事があり、この指定が無い場合は計算式をセルの値として読み込みますが、この指定をする事により計算式の結果を読み込む事が出来ます。今回のサンプルプログラムには関係しませんが、参考として記述しました。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.column_dimensions[‘B’].width = 20」と5行目の「sheet.column_dimensions[‘C’].width = 12」で列の幅を変更しています。この場合はB列の幅を20に変更、C列の幅を12に変更しています。

◆6行目の「book.save(“テスト01実行結果.xlsx”)」は、作成したエクセルブックを「テスト01実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
ファイルの読み込み
エクセルのセルに計算式が設定されていても、計算結果だけを取り出したい場合はオプションに data_only=Trueを指定します。
book = xls.load_workbook("ファイル名.xlsx",data_only=True)

列の幅を変更
column_dimensionsで変更したい列と、幅を指定する
sheet.column_dimensions['列'].width = 

エクセルの列の幅をまとめて変更する

openpyxlでは列の幅をまとめて変更する命令はありませんが簡単なプログラムを記述することで、エクセルの列の幅をまとめて変更することが出来ます。まとめて変更する時はcolumn_dimensionsを繰り返し実行します。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルのA列~E列の幅をまとめて変更してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx")
sheet = book.active
rows = ["A","B","C","D","E"]
for row_str in rows:
    sheet.column_dimensions[row_str].width = 4
book.save("テスト02実行結果.xlsx")

プログラムを実行すると「テスト02実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみるとA列~E列の幅が変更されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目からが、まとめて列の幅を変更する方法になります。「rows = [“A”,”B”,”C”,”D”,”E”]」の部分で変更したい列をリストとして定義しています。

◆5行目と6行目の「for row_str in rows: sheet.column_dimensions[row_str].width = 4」の部分は、繰り返しの構文であるfor文を使用して、4行目で定義した列の名前を1つずつ取り出して、列の幅の変更を繰り返し実行しています。

◆7行目の「book.save(“テスト02実行結果.xlsx”)」は、作成したエクセルブックを「テスト02実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
列の幅をまとめて変更したい場合はリストとfor文を使用して繰り返し実行で変更する
witdthで幅を指定する
rows = ["A","B","C","D","E"]
for row_str in rows:
    sheet.column_dimensions[row_str].width = 4

openpyxlでエクセルの行操作

delete_rows(*) エクセルの行を1列削除する

openpyxlでエクセルの行を削除する事が出来ます。行の削除はdelete_rowsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの2行目を削除してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.delete_rows(2)
book.save("テスト07実行結果.xlsx")

プログラムを実行すると「テスト07実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると2行目が削除されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.delete_rows(2)」でエクセルの2行目を削除しています。カッコ( )の中に削除する行を指定する事で行を削除します。

◆5行目の「book.save(“テスト07実行結果.xlsx”)」は、作成したエクセルブックを「テスト07実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
削除する行はカッコ( )内に数字で指定する。
sheet.delete_rows(削除行)

delete_rows(*,*) エクセルの行をまとめて削除する

openpyxlでエクセルの行をまとめて削除する事が出来ます。行をまとめて削除する場合もdelete_rowsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの2行目と3行目をまとめて削除してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.delete_rows(2,2)
book.save("テスト08実行結果.xlsx")

プログラムを実行すると「テスト08実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると2行目と3行目が削除されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.delete_rows(2,2)」でエクセルの2行目と3行目を削除しています。カッコ( )の中に削除開始行と削除行数を指定する事で行をまとめて削除します。

◆5行目の「book.save(“テスト08実行結果.xlsx”)」は、作成したエクセルブックを「テスト08実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
削除開始行と削除行数をカッコ( )内に数字で指定する。
sheet.delete_rows(削除開始行,削除行数)

insert_rows(*) エクセルの行を1列挿入する

openpyxlでエクセルの行を挿入する事が出来ます。行の挿入はinsert_rowsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの3行目に行を挿入してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.insert_rows(3)
book.save("テスト09実行結果.xlsx")

プログラムを実行すると「テスト09実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると3行目に行が挿入されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.insert_rows(3)」でエクセルの2行目に行を挿入しています。カッコ( )の中に挿入する場所を指定する事で行を挿入します。

◆5行目の「book.save(“テスト09実行結果.xlsx”)」は、作成したエクセルブックを「テスト09実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
行を挿入する場所はカッコ( )内に数字で指定する。
sheet.insert_rows(行挿入場所)

insert_rows(*,*) エクセルの行をまとめて挿入する

openpyxlでエクセルの行をまとめて挿入する事が出来ます。まとめて行を挿入する場合もinsert_rowsで行います。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの4行目から行を2行挿入してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.insert_rows(4,2)
book.save("テスト10実行結果.xlsx")

プログラムを実行すると「テスト10実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると4行目から行が2行挿入されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.insert_rows(4,2)」でエクセルの4行目から行を2行挿入しています。カッコ( )の中に挿入開始行と挿入行数を指定する事でまとめて行を挿入します。

◆5行目の「book.save(“テスト10実行結果.xlsx”)」は、作成したエクセルブックを「テスト10実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
挿入開始行と挿入行数をカッコ( )内に数字で指定する。
sheet.insert_rows(挿入開始行,挿入行数)

エクセルの行の高さを1行変更する row_dimensions[*].height

openpyxlを使ってエクセルの行の高さを変更する事ができます。行の高さを変更は基本的に1行ずつ変更するコードを記述する必要がありますが、プログラムを工夫する事により簡単に複数行の高さを変更する事が出来ます。まずは1行ずつ変更する方法を説明します。row_dimensionsで列の幅を変更します。

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの4行目の高さを変更してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
sheet.row_dimensions[4].height = 50
book.save("テスト11実行結果.xlsx")

プログラムを実行すると「テスト11実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると4行目の行の高さが変更されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目の「sheet.row_dimensions[4].height = 50」で行の高さを変更しています。この場合は4行目の高さを50に変更しています。

◆5行目の「book.save(“テスト11実行結果.xlsx”)」は、作成したエクセルブックを「テスト11実行結果.xlsx」という名前で保存しています。

ポイント
行の高さを変更
row_dimensionsで変更したい行と、高さを指定する
sheet.row_dimensions[行].height = 高さ

エクセルの行の高さをまとめて変更する

図のようにあいうえお、かきくけこ、・・・が記述されている「テスト01.xlsx」というエクセルファイルの1~5行目の高さをまとめて変更してみます。

次のコードを実行してみましょう。

import openpyxl as xls
book = xls.load_workbook("テスト01.xlsx",data_only=True)
sheet = book.active
for i in range(1,6):
    sheet.row_dimensions[i].height = 40
book.save("テスト12実行結果.xlsx")

プログラムを実行すると「テスト12実行結果.xlsx」というエクセルファイルが新たに作成されて、ファイルを確認してみると1~5行目の高さが変更されています。この内容について一つずつ説明していきます。

◆1行目の「import openpyxl as xls」は、ライブラリをインポートして「xls」という名称で使用できるようにしています。

◆2行目の「book = xls.load_workbook(“テスト01.xlsx”,data_only=True)」は、「テスト01.xlsx」という名前のエクセルファイルを読み込んでいます。

◆3行目の「sheet = book.active」は、これから操作しようとしているシートを取得します。具体的にはファイルを開いてすぐに表示されるシート=アクティブなシートを取得しています。

◆4行目と6行目の「for i in range(1,6): sheet.row_dimensions[i].height = 40」の部分は、繰り返しの構文であるfor文を使用して、行の高さの変更を繰り返し実行しています。

◆5行目の「book.save(“テスト12実行結果.xlsx”)」は、作成したエクセルブックを「テスト12実行結果.xlsx」という名前で保存しています。

ポイント
【まとめ】
行の高さをまとめて変更したい場合はfor文を使用して繰り返し実行で変更する
heightで高さを指定する
for i in range(1,6):
    sheet.row_dimensions[i].height = 40