Python で エクセル操作
今日は、Python でエクセルを操作する方法について、書いていきます。
1. openpyxlのインストール
まずは、openpyxlという外部ライブラリをインストールしてエクセルを操作するための、便利なモジュールを使えるようにします。
ターミナルやコマンドプロンプトでpipインストールを行います。
pip install openpyxl
※pythonの環境構築等は以下を参照
※M1チップのMacを利用している方
2. openpyxlでワークブックを作成して、セルに値を入力してみる
openpyxlライブラリのWorkbook関数を利用して、ファイル作成や保存ができます。
(1) コードを書いてみよう
まずは、ファイルを一つ作って、何かセルに値を入力し保存するプログラムを書いてみましょう。(ファイル名はtest.pyとしました)
from openpyxl import Workbook
#ワークブック操作をする・・・❶
wb = Workbook()
#ワークシートを選択する(アクティブなシートを選択する)・・・❷
ws = wb.active
#A1セルに文字列を入力する・・・❸
ws.cell(1, 1).value = "テスト"
#ワークブックに名前をつけて保存する・・・❹
wb.save('excel_test1.xlsx')
❶ ワークブックオブジェクトをwb変数に格納します。
❷ アクティブなシートをws変数に格納します。
❸ ワークシートオブジェクトに対して、cell(1, 1).value関数でセルへの入力を行います。
❹ 最後はワークブックオブジェクトに対するsave関数でファイル名を文字列で引数として渡して保存が可能です。
(2) プログラムの実行
では、test.pyを実行してみましょう。
(以下はターミナルやコマンドプロンプトで実行します)
python test.py
(3) 実行結果の確認
今いるフォルダ配下に「excel_test1.xlsx」というエクセルファイルが作成されていると思います。
エクセルファイルを開いてみましょう。
基本はこんな感じです。
3.リストを作成し、リストの値をループ処理でセルに入力していく
(1) コードを書いてみよう(既存のファイルを読み込む)
先ほど作成したファイルを読み込んで、更新していきます。
まずはリストを作成し、その上でA列の1行目から100行目まで値を入力するプログラムを作成します。(test2.pyとします)
from openpyxl import load_workbook
#ファイルを読み込む・・・❶
wb = load_workbook('excel_test1.xlsx')
#更新するwsを選択する・・・❷
ws = wb['Sheet']
#1から100までの数値を格納したリストを作成し、試しに出力する・・・❸
num_list = [i for i in range(1, 101)]
print(num_list)
#A列の1行目から100行目に、リストに対するループ処理で値を入力していく・・・❹
for num in num_list:
ws.cell(num, 1).value = num
#workbookを上書き更新する
wb.save('excel_test1.xlsx')
❶ ファイルを読み込むために、opnepyxlモジュールから、load_workbook関数をインポートし、先ほどのファイル名を引数に渡し、wb変数にワークブックオブジェクトを格納します。
❷ 更新するワークシートを今度はワークシート名で選択します。シート名をキーにして選択しています。
❸ リストデータを作成し、num_list変数に格納しています。念の為、リストデータ作成できるかをprint関数でコンソールに出力します。
❹ 作成したリストデータに対するループ処理を行い、A列の1行目から100行目までリストに格納した値を入力しています。
(2) プログラムの実行
では、先ほどと同様にプログラムを実行してみましょう。
python test2.py
(3) 実行結果の確認
コンソールの出力結果を確認しつつ、エクセルファイルを開いて、実行結果を確認してみます。
コンソール出力結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
エクセルファイル(excel_test1.xlsx)
入力できていますね。
4.空白行を探して、空白行からループ処理で入力を行う
では、次に実務上使いそうな既存のファイルの空白行から続けて入力指示をするプログラムを書いてみましょう。
(1) コードを書いてみよう(test3.py)
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?