Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Excelファイルの操作方法】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法

 

f:id:kuku81kuku81:20220220111729p:plain

 

 

Pythonを使用して一からExcelファイルを読み書きするための方法を一通り順を追って説明していきたいと思います。 

以下の目次として記載しているものが説明していく内容となります。   

必要としていることがその中の一部であればそこだけ読んでもらって構わないと思います。

 

目次

 

はじめにやらなければならないのは、一通り実行していくために必要なもののダウンロードとインストールです。

使用するものはPythonということになりますので、まずはPython のダウンロードとインストールからになります

2022年1月現在、最新のバージョンは Python 3.10.2 となっています。

 

 

1.Pythonのダウンロードとインストール

 

1.1.Pythonのダウンロード

まずはじめに、Python のダウンロードを行います。

以下のURL

https://www.python.org/

へアクセスします。

Pythonのダウンロード画面が表示されます。

 

Pythonダウンロード画面

Pythonダウンロード画面(Downloads選択)

 

画面内の「Downloads」にマウスを合わせ、表示されたメニューの中から

  「 Windows

をクリックします

MACの場合は「macOS」選択となります)。

 

Pythonダウンロード画面(OS選択)

Pythonダウンロード画面(OS選択)

 

過去から最新までのバージョンのWindows 向けの Python のダウンロード用リンクが掲載されたページが表示されます。

最新バージョンのPythonをダウンロードしますので、

  「Latest Python 3 Release - Python 3.10.2」

をクリックします

(3.10.2の箇所はその時の最新のバージョンのものを選んでください)。

 

Pythonダウンロード画面(最新バージョン選択)

Pythonダウンロード画面(最新バージョン選択)

 

Python 3.10.2 のダウンロードファイル選択用の画面が表示されます。

 

画面内一番下の方にFilesと表示された OS 毎に表示されているダウンロード用のファイル一覧が表示されます。

いろいろと種類はありますが、 Windows10 (64bit) 向けのインストーラー付き

のものであれば、

  「Windows installer (64-bit)

と書かれたリンクをクリックしてダウンロードしてください。

Windows10 (32bit)向けのインストーラー付きのものであれば、

   「Windows installer (32-bit)

と書かれたリンクをクリックしてダウンロードしてください。

 

ダウンロードが開始されます。

必要ファイルのダウンロードについては以上で終了です。

 

Pythonダウンロード画面(ファイル選択)

Pythonダウンロード画面(ファイル選択)

1.2.Pythonのインストール

 
次に、ダウンロードしたPythonファイルをインストールします。
 
ダウンロードしたPythonファイルをダブルクリックすると、以下のようなインストール用画面が表示されます。
 
自動的にPath設定してもらうようにした方がいいと思いますので、
  「Add Python 3.10 to PATH」
をクリックしておいてください。
3.10の部分はバージョンによって表示が変わります。
 
デフォルトで指定されているインストール先へのインストールでいいようであれば、
  「Install Now」
をクリックします。
この場合は、このクリック後に、このページ最後のインストール完了画面が出ればインストールは完了となります。
 
今回は、設定を一部変更したかったので、
  「Customize installation」
をクリックすることにします。
 

Pythonインストール初期画面

Pythonインストール初期画面

 

次に、オプション機能選択画面(Optional Features)が表示されます。

インストールから外したい項目があればチェックをはずします。

問題なければ「Next」をクリックします。

 

Pythonインストール画面(オプション機能選択)

Pythonインストール画面(オプション機能選択)

 続いて、高度なオプション機能選択画面(Advanced Options)が表示されます。

 

ここで、一番上の「Install for all users」にチェックをつけることにします。

Windowsにログインする可能性があるすべてのユーザーで使用できるようにしたかったためです。

現在Windowsにログインしているユーザーのみしか使用しないようであればそのまま何もチェックしないで構わないです。

 

インストール先などに問題なければ「Install」をクリックします。

 

 

Pythonインストール画面(高度なオプション機能選択)

Pythonインストール画面(高度なオプション機能選択)
インストールが開始されます。その後、しばらくして次の画面が出ればインストール完了です。
「Close」をクリックすればインストールは完了です。
 
以上で、Pythonのダウンロードとインストールは完了となります。
 

Pythonインストール完了画面

Pythonインストール完了画面

 

2.Visual Studio Codeのダウンロードとインストール

 

もう1つ必要となってくるのは、プログラムのコーディングを行う時に必要なものであるコードエディターです。

今回使用しようとしているものは、無料のものとしては、かなり機能的に充実しているエディターとして、マイクロソフトが提供しているコードエディターVisual Studio Codeになります。

単にコーディングするだけでなく、デバッグ機能などが非常に充実しています。

そこで、このVisual Studio Codeのダウンロードとインストールを行っていきます。

 

2.1.Visual Studio Codeのダウンロード

 

まずは、Visual Studio Codeのダウンロードからです。

以下のサイトにアクセスします。

 

https://code.visualstudio.com/

 

Visual Studio Codeのダウンロードサイト

Visual Studio Codeダウンロードサイト

画面左側のダウンロードボタン(Download for Windows)をクリックしてください。
Macの場合は、プルダウンメニューから Mac OSで種類を選択してクリックになります。

 

現在のダウンロードVer.は、1.64.2.0でした。

 

クリックすると、以下のような画面が表示されてダウンロードされます。

 

Visual Studio Codeのダウンロード完了画面

Visual Studio Codeのダウンロード完了画面

ダウンロードは以上で完了です。

 

2.2.Visual Studio Codeのインストール

 

ダウンロードが完了したらインストールになります。

 

ダウンロードしたファイルをダブルクックしてください。

ダブルクリックすると、インストーラが起動して以下のウインドウ画面が表示されます。

内容を確認して問題なければ「同意する」を選択して「次へ」をクリックしてます。

 

VisualStudioCodeインストール画面

VisualStudioCodeインストール画面

続いて、追加タスクの選択画面が表示されます。

初期状態では、「PATHへの追加」のみが選択されています。

問題なければそのまま「次へ」をクリックします。

 

VisualStudioCodeインストール追加タスク選択画面

VisualStudioCodeインストール追加タスク選択画面

最後にインストール準備完了画面が表示されます。

確認して「インストール」をクリックしてインストールを開始します。

VisualStudioCodeインストール準備完了画面

VisualStudioCodeインストール準備完了画面

 

完了したら完了画面が表示されますので「完了」をクリックするとインストール完了です。

中央の「VisualStudioCodeを実行する」にチェックが入っているとVisualStudioCodeが起動します。

 

VisualStudioCodeインストール完了画面

VisualStudioCodeインストール完了画面

 

 

3.Visual Studio Codeの画面表示の日本語化

 

 

Visual Studio Codeのダウンロードとインストールが終了したら次に行うのは画面表示の日本語化になります。

これが必要ない場合には飛ばしてもらって構いません。

 

それでは、日本語化について順に説明していきます。

 

3.1.日本語化拡張機能のインストール

 

Visual Studio Codeの初期画面としては、以下のようになっていると思います。

このようにVisual Studio Codeをインストールした当初は表記が英語表示になっていると思います。これを日本語表示にするための方法を記載していきます。

 

Visual Studio Code初期画面

Visual Studio Code初期画面

まずは、日本語化するための拡張機能をインストールします。

 

画面上部のメニューバーの「View」をクリックし、その中の「Command Palette…」を選択します。

 

【Visual Studio Code言語切替】View→Command Paletteの選択

Visual Studio Code言語切替】View→Command Paletteの選択

 

Command Paletteのキー入力エリアが表示されたら、そこに、「display」と打ち込みます(「」は打ち込まなくていいです)。

 

そうすると、その下に以下のように「Configure Display Language」と表示されますのでそれをクリックします。

この中の「Configure Display Language」を選択します。

 

【Visual Studio Code】display入力→Configure Display Language選択

Visual Studio Code】display入力→Configure Display Language選択

 

表示言語の選択状態となります。

元々インストール当初は、英語を表すenだけだと思います。

(以下の画面例は、すでに日本語化拡張機能が入っているPCのため日本語のjaも表示されています)

ここで新たに言語を追加する場合には一番下の「Install additional languages」を選択します。

 

【Visual Studio Code言語切替】表記言語選択

Visual Studio Code言語切替】表記言語選択

 

そうすると、以下のように新たにインストールする言語の拡張機能一覧が表示されます。

ここで、「Japanese Language Pack for Visual Studio Code」の中の「install」をクリックします。

 

【Visual Studio Code】日本語化拡張機能選択

Visual Studio Code】日本語化拡張機能選択

 

以下のように表示された日本語化用のインストール画面で画面上部の「install」をクリックします(以下の画面ではすでにインストール済のため「uninstall」と表示されていますがここが「install」と表示されているはずです)。

 

【Visual Studio Code】日本語化拡張機能インストール画面

Visual Studio Code】日本語化拡張機能インストール画面

 

そうすると、インストールが完了します。

 

3.2.再起動により日本語化

 

ここまでくればあとは、以下の画面のように右下に表示された「Changed Language and Restart」をクリックすることでVisual Studio Codeが再起動され、立ち上がりなおした後には日本語化されていると思います。

 

【Visual Studio Code】日本語化拡張機能言語変更再起動選択画面

Visual Studio Code】日本語化拡張機能言語変更再起動選択画面

 

 

4.Python拡張機能のインストール

 

Visual Studio CodePythonをコーディング、デバッグなどを行う場合にはPython拡張機能をインストールする必要があります。

そのためこのインストール手順を説明していきます。

 

日本語化したVisual Studio Codeの初期画面としては、以下のようになっていると思います。

 

【Visual Studio Code】初期画面

Visual Studio Code】初期画面

 

 

拡張機能をインストールするためには、まず、画面上部のメニューバーの「表示」をクリックし、その中の「拡張機能」を選択します。

 

【Visual Studio Code】表示→拡張機能選択

Visual Studio Code】表示→拡張機能選択

 

拡張機能が画面左側に表示されたら、その中の上部の検索ボックス(「MarketPlaceで拡張機能を検索する」と表記してある箇所)に「Python」と打ち込みます。

 

絞り込んだ拡張機能の中の「Python」(通常は一覧の先頭に表示、項目の先頭にintelliSense(Pylance)と表示されている項目)の「インストール」ボタンをクリックします。

 

【Visual Studio Code】拡張機能一覧表示画面(Python入力)

Visual Studio Code拡張機能一覧表示画面(Python入力)

 

これによりPython拡張機能がインストールされます。

完了すると、以下のように先程クリックしたインストールボタンが設定アイコンになり、メインパネルに「無効にする」と「アンインストール」ボタンが表示されます。

 

これにより、Python拡張機能のインストールが完了したことがわかります。

 

【Visual Studio Code】Python拡張機能インストール完了画面

Visual Studio CodePython拡張機能インストール完了画面

 

 

5.openpyxlのインストール

 

 

続いて、PythonからExcelを読み書きするために使われる代表的な外部ライブラリであるopenpyxlのインストール方法を記載します。

これは、WindowsではコマンドプロンプトMacではターミナルから行います。

 
まず、コマンドプロンプトを開きます(Macの場合はターミナル)。
以下のコマンドを入力します。
 
インストール
py -m pip install openpyxl
 
これでopenpyxlはインストールされます。
ちなみに、アップグレードの場合は以下となります。
 
アップグレード
py -m pip install -U openpyxl
 
 
この後、インストールの完了確認として以下を入力すると、
これまでにインストールしたパッケージとそのバージョンの一覧が表示されます。
この中にopenpyxlがあることを確認してください。
 
インストール済パッケージのバージョン確認
pip list
 
openpyxlのインストールとインストールの完了確認(バージョン確認)は以上となります。
 
 

6.openpyxlを使ったExcelファイルの読み書き方法

 

ここまでで一通り必要なもののダウンロードとインストールは完了しました。

そこで、先程インストールしたopenpyxlを使用して、PythonからExcelを読み書きする方法を具体例をつけて説明していきたいと思います。

 

まずは、PythonからExcelファイルを読み込み場合の方法について記載していきます。

openpyxlを使った読み込みプログラムを例を挙げて説明していきます。

 

6.1.対象Excelファイルと処理内容

 

対象となるExcelファイルは以下のような簡単なものとします。

 

c:\abc.xlsx

選択 名前 得点
  鈴木 80
田中 70
  高橋 90
  佐藤 50

シート名:'def'

 

ここで、処理する内容としては、

[処理内容]

Excelファイル(c:\abc.xlsx)のシート名('def')の1列目に〇がついている行の名前と点数を取得(1つ目の○の名前、点数)

とします。

 

6.1.1.プログラム例1(Excel表内データ取得)

 

この処理を行うプログラムの例としては以下のようになります。

 

excelreadwrite1.py

import openpyxl

###wb = openpyxl.load_workbook(ファイル名)
wb = openpyxl.load_workbook(r"C:\abc.xlsx")

###ws = wb[シート名]
ws = wb["def"]

#辞書型変数dict_text 宣言、初期化(要素としてキー'名前'、'得点'を持つ)
dict_text = {"名前":"","得点":""}

#xの値でループ(xの値を1から最大行番号までループ)
for x in range(1, ws.max_row ):

    #1列目を順に見ていきセルの値が"○"であれば、
    if ws.cell(x,1).value == "○":

           #"○"がついている行の名前と得点取得
           dict_text["名前"]= ws.cell(x, 2).value
           dict_text["得点"]= ws.cell(x, 3).value
           break

 

6.1.2.プログラムの説明

 

1行目の

import openpyxl

は、openpyxlのインポートになります。

 

それに続く、

###wb = openpyxl.load_workbook(ファイル名)
wb = openpyxl.load_workbook(r"C:\abc.xlsx")

###ws = wb[シート名]
ws = wb["def"]

で、wbという変数にExcelファイル(c:\abc.xlsx)を読み込み、wsにそのExcelファイル(c:\abc.xlsx)のシート名('def')のシートを読み込んでいます。

ファイル名指定でのカッコ内の先頭の"r"は、これがないとファイル指定時に"\"がエスケープシーメンスとみなされてエラーが出るため必要となります。

 

その次の、

#辞書型変数dict_text 宣言、初期化(要素としてキー'名前'、'得点'を持つ)
dict_text = {"名前":"","得点":""}

でキーとして'名前','得点'をもつ辞書型変数dict_textを宣言、初期化しています。

 

続いて、

#xの値でループ(xの値を1から最大行番号までループ)
for x in range(1, ws.max_row ):

では、for文の中で、xの値として、3から ws.max_rowまでループを回します。

ws.max_rowにはopenpyxlではwsシートの最大行番号が入っています。

 

それに続く、

    #1列目を順に見ていきセルの値が"○"であれば、
    if ws.cell(x,1).value == "○":

では、for文の中でxで行番号を変えながら1行目から最大行番号まで"○"が出てくるまでセルの値を見ていきます。

 

そして、if文の条件成立時の実行内容としては、

           #"○"がついている行の名前と得点取得
           dict_text["名前"]= ws.cell(x, 2).value
           dict_text["得点"]= ws.cell(x, 3).value
           break

となっています。

 

これにより、1列目に"○"がついてる行がはじめて登場した時にその行の2列目のセルの内容をdict_textの'名前'キーの値に入れ,3列目のセルの内容を'得点'キーの値に入れています。

この場合、得点は文字列として入ります。

 

これにより、Pythonからopenpyxlを使用して、Excelファイルの該当するデータや行番号の読み込みができることになりますので、プログラムの内容を変更することで種々のデータなどの取得ができると思います。

 

6.2.対象Excelファイルと処理内容

 

次に、Excelの表内の値を取得した後に別のExcelファイルへの書き込み処理をするように内容を追加してみます。

 

対象とするExcelファイルは以下のようにします。

 

c:\abc.xlsx

名前 英語 数学 国語
鈴木 80 55 75
田中 70 65 85
高橋 90 60 90
佐藤 50 75 60

シート名:'def'

 

c:\abc2.xlsx

科目 英語 数学 国語
平均点      

シート名:'def2'

 

処理する内容としては、

[処理内容]

abc.xlsxファイルから科目ごとの各生徒の点数を読み込んで平均点を求め、abc2.xlsxファイルの各科目の平均点の欄に書き込む

とします。

 

6.2.1.プログラム例2(Excel表内データ取得後別ファイルへ書込み)

 

これを実施するためのプログラムの例としては以下のようになります。

 

excelreadwrite2.py

import openpyxl

###wb = openpyxl.load_workbook(ファイル名)
wb = openpyxl.load_workbook(r"C:\abc.xlsx")
wb2 = openpyxl.load_workbook(r"C:\abc2.xlsx")

###ws = wb[シート名]
ws = wb["def"]
ws2 = wb2["def2"]

#辞書型変数dict_text 宣言、初期化(要素としてキー'英語'、'数学'、'国語'を持つ)
dict_text = {"英語":0,"数学":0,"国語":0}

#xの値でループ(xの値を2から最大行番号までループ)
for x in range(2, ws.max_row ):

        #abc.xlsxファイルのdefシートから各科目ごとに全員の合計点を計算
        dict_text["英語"]= dict_text["英語"] + ws.cell(x, 2).value
        dict_text["数学"]= dict_text["数学"] + ws.cell(x, 3).value
        dict_text["国語"]= dict_text["国語"] + ws.cell(x, 4).value

       
#各科目ごとに平均点を求めて、abc2.xlsxファイルのdef2シートの平均点欄へ書込み
ws2.cell(2, 2).value = dict_text["英語"] / (ws.max_row - 1)
ws2.cell(2, 3).value = dict_text["数学"] / (ws.max_row - 1)
ws2.cell(2, 4).value = dict_text["国語"] / (ws.max_row - 1)

wb2.save(r"C:\abc2.xlsx")

 

6.2.2.プログラムの説明

先頭のimport文は一緒ですが、

その次の、

###wb = openpyxl.load_workbook(ファイル名)
wb = openpyxl.load_workbook(r"C:\abc.xlsx")
wb2 = openpyxl.load_workbook(r"C:\abc2.xlsx")

###ws = wb[シート名]
ws = wb["def"]
ws2 = wb2["def2"]

で、読み込み用のファイル、シートに加えて、書き込み用のファイル、シートを追加しています。

 

その次の、

#辞書型変数dict_text 宣言、初期化(要素としてキー'英語'、'数学'、'国語'を持つ)
dict_text = {"英語":0,"数学":0,"国語":0}

で、各科目の合計点用にキーとして'英語','数学','国語'をもつ辞書型変数dict_textを宣言、初期値を0として初期化しています。

 

そして、それに続く、

#xの値でループ(xの値を2から最大行番号までループ)
for x in range(2, ws.max_row ):

        #abc.xlsxファイルのdefシートから各科目ごとに全員の合計点を計算
        dict_text["英語"]= dict_text["英語"] + ws.cell(x, 2).value
        dict_text["数学"]= dict_text["数学"] + ws.cell(x, 3).value
        dict_text["国語"]= dict_text["国語"] + ws.cell(x, 4).value

で、ws(abc.xlsxファイルのdefシート)からfor文で2行目から最大行番号までループを回しながら各科目ごとに全生徒の点数を読み込んで合計点を求めています。

たとえば、英語であれば、dict_text["英語"]に、順に各生徒の点数を足しこんでいます。

 

次が別ファイルへの書き込みとなります。

#各科目ごとに平均点を求めて、abc2.xlsxファイルのdef2シートの平均点欄へ書込み
ws2.cell(2, 2).value = dict_text["英語"] / (ws.max_row - 1)
ws2.cell(2, 3).value = dict_text["数学"] / (ws.max_row - 1)
ws2.cell(2, 4).value = dict_text["国語"] / (ws.max_row - 1)

では、求めた各科目の合計点を人数で割って平均点を求め、ws2(abc2.xlsxファイルのdef2シート)の各科目の平均点の欄に書き込んでいます。

 

今回の例では、各科目ごとの行番号などは固定で入れています。

 

最後の

wb2.save(r"C:\abc2.xlsx")

で、書き込んだファイルを保存しています。

上の例ではCドライブの直下を書き込み先としていますが、管理者権限でないと書き込めないということでエラーが出る場合があります。

その場合は、ドキュメントの下(C:\Users\(ユーザー名)\Documents)など書き込めるところに変更してください。

 

これらにより、Pythonからopenpyxlを使用して、Excelファイルの該当するデータを読み込み、別ファイルへの書き込みなどができることになります。

今回説明のために挙げたのは簡単な例となりますが、プログラムの内容を変更することで種々のデータなどの読み込み、書き込みができると思いますのでためしてみてください。

 

 

 

 

Pythonプログラミングの無料講座: