【業務自動化】チャプター1-2|新規Excelファイルを作成しよう
一つ前のページでは openpyxlをインストール しました。
今回は openpyxlでExcelファイルを作成 してみましょう。
Chapter1:PythonでExcelを操作しよう
・Chapter1-1:openpyxlとは何か|インストールと動作確認
・Chapter1-2:PythonでExcelファイルを作成しよう ◁今回はここ
・Chapter1-3:Excelシートからデータを読み込もう
・Chapter1-4:Excelシートにデータを書き込もう
・Chapter1-5:データを新規シートへ自動振り分けしよう
・Chapter1-6:簡単なExcel自動化を体験しよう
Chapter2:PyInstallerで自動化ツール(.exe)を作ろう
Chapter3:ファイル・フォルダを操作しよう
Chapter4:メール送信を自動化しよう
Chapter5:Webスクレイピング
「Excelファイルを自動で作成できる」ことは、自動化の第一歩です。
例えば、定型的な報告書やデータ集計用のシートを毎回手作業で作成していると、時間がかかるだけでなくミスも発生しやすくなります。
Pythonを使えば、ファイル名やセルの内容を指定するだけで 一瞬で新しいExcelファイルを生成 できます。
この記事を読み終えると、次のことができるようになります。
- PythonコードからExcelファイルを新規作成できる
- セルに文字を入力して保存できる
PythonでExcelファイルを新規作成する方法
ここでは、openpyxlを使って新しいExcelファイルを作成し、セルに文字を書き込み、ファイルとして保存 する方法を学びます。
まずは実際のサンプルコードを確認してみましょう。
サンプルコードでExcelファイルを作成しよう
まずは、openpyxlを使ってExcelファイルを新規作成し、セルに文字を書き込むシンプルなコードを見てみましょう。
以下のコードをコピーして実行してください。
import openpyxl # openpyxlをインポート new_book = openpyxl.Workbook() # Workbookクラスのインスタンス生成 sheet = new_book.active # アクティブなシートを取得 sheet['A1'] = "Pythonで作成したExcel" # A1セルに文字列を入力 new_book.save("new_excel.xlsx") # 「new_excel.xlsx」というファイル名で保存
このコードを実行すると、このコードを保存したフォルダ内に「new_excel.xlsx」というファイルが作成されます。
A1セルには「Pythonで作成したExcel」と入力されているはずですので確認して下さい。
ただし、お使いのPCの設定によっては作成される場所が異なる場合があります。
その場合の対処方法は後で説明しますので、まずはこのコードの解説へ進んで下さい。
コードの解説:PythonでExcelを作成する流れ
このコードはとてもシンプルですが、Excel自動化の基本が詰まっています。
順番に見ていきましょう。
ライブラリの読み込み|openpyxlをインポートしよう
import openpyxl # openpyxlをインポート
Excelを操作するために、まず openpyxl
をインポートします。
Excel自動化のためのコードを書く際には、必ず最初に書き込みましょう。
新規ワークブックの作成|Workbook()クラスの使い方
new_book = openpyxl.Workbook() # Workbookクラスのインスタンス生成
Workbook()
クラス をインスタンス生成することで新しいExcelファイルを生成し、変数に代入しています。
この方法で作成されたExcelファイルはデフォルトで「Sheet」という名前のシートが1つ入っています。
ただし、この時点ではnew_bookはメモリ上に存在するだけで、まだ保存はされていません。
シートの取得|activeプロパティの使い方
sheet = new_book.active # アクティブなシートを取得
Workbook
オブジェクト (Excelファイル) には複数のシートを持たせることができます。
その中で「現在アクティブな(選択されている)シート」を取得するのが .active
プロパティです。
新たに開く場合は一番最初のシートを取得します。
取得した結果は Worksheet
オブジェクト になり、変数sheet
に代入されます。
セルにデータを書き込む|[]セルオブジェクトの使い方
sheet['A1'] = "Pythonで作成したExcel" # A1セルに文字列を入
Worksheetオブジェクトに[]を付けることで セルオブジェクト となり、データの読み書きができます。
ここではA1セルに「Pythonで作成したExcel」という文字を入力しています。
ファイルの保存|saveメソッドの使い方
new_book.save("new_excel.xlsx") # 「new_excel.xlsx」というファイル名で保存
save()
メソッド を使うことで、Excelファイルを保存できます。
ここでは「new_excel.xlsx」という名前で保存しています。
保存先はスクリプトを実行したフォルダ(カレントディレクトリ)です。
pathlibライブラリでExcel保存先を指定しよう
先ほどのコードでは、Excelファイルは スクリプトを実行したフォルダ に保存されました。
しかし、業務で使う場合は「レポート用フォルダ」や「バックアップ用フォルダ」など、決まったディレクトリに保存したいことが多いです。
ここで便利なのが pathlibライブラリ です。
pathlibを使えば、ファイルやフォルダのパスを簡単かつ安全に扱うことができ、OSに依存しないコードが書けます。
pathlibライブラリの基本と使い方
Pythonの標準ライブラリである pathlib は、ファイルやフォルダの「パス(保存場所)」を扱うための便利なツールです。
従来は os.path
を使うことが多かったのですが、pathlibを使うと直感的にパスを操作できるようになります。
例えば、Pythonファイルを保存したフォルダの中に「workbooks」というフォルダを作り、その中に作成するExcelファイルを保存したいとします。
そのフォルダをPythonコード内で指定するには、以下のように書きます。
import pathlib # pathlibのインポート file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成
2行目を詳細に解説します。
pathlib.Path(__file__)|実行中のスクリプトのファイルパス取得
__file__
は「実行中のスクリプトのファイルパス」を表す特別な変数です。
pathlib.Path(__file__)
とすることで、スクリプトファイルのパス(そのPythonファイルがある場所)を Pathオブジェクト に変換できます。
例えば、Usersファイルの中にapp.pyというファイルがある場合、pathlib.Path(__file__)
は以下の意味となります。
C:\Users\app.py
.parentプロパティ|親フォルダの取得
Pathオブジェクトの .parent
プロパティを使うと、そのファイルがある 親フォルダ を取得できます。
Usersファイルの中にapp.pyというファイルがある場合、.parentを付けることで以下の意味となります。
C:\Users
/
演算子によるパス結合
pathlibの特徴的な書き方として、パスの結合に /
演算子が使えます。
文字列を単純に結合するのではなく、OSに応じて正しい区切り文字(\ や /)を自動で選んでくれる のがポイントです。
これを使用することで、Pythonファイルを保存したフォルダの中の「workbooks」というフォルダを指定することができます。
import pathlib # pathlibのインポート file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成
このコードの変数file_pathには以下の文字列が格納されます(Windowsの場合)。
C:\Users\workbooks
このサイトにおけるファイルの保存場所のルール
このサイトで学習を進めていくにあたり、作成するPythonファイルやExcelファイルは以下のような階層で保存することを推奨します。
チャプター毎にフォルダを分け、Pythonファイルはそのフォルダ直下に保存。Excelファイルはworkbooksというフォルダを作ってその中に保存しましょう。
Excel自動化学習 # 学習フォルダ ├── Chap1/ # チャプター1の保存フォルダ │ ├── app1-1.py │ ├── app1-2.py │ ├── ・・・ │ └── workbooks/ # チャプター1のエクセルファイルの保存フォルダ │ ├── sample1-1.xlsx │ ├── sample2-1.xlsx │ ├── ・・・ │ ├── Chap2/ # チャプター2の保存フォルダ │ ├── app2-1.py │ ├── ・・・ │ └── workbooks/ # チャプター2のエクセルファイルの保存フォルダ │ ├── ・・・
今後紹介するコードは全て、この階層で保存されていることを前提としています。
是非このように保存して下さい。
サンプルコードで保存先フォルダを指定しよう
先ほどの新規Excelファイルを作成するコードを、pathlib
ライブラリを使って保存場所を指定するように変更しましょう。
import openpyxl, pathlib # openpyxlとpathlibのインポート file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成 new_book = openpyxl.Workbook() # Workbookクラスのインスタンス生成 sheet = new_book.active # アクティブなシートを取得 sheet['A1'] = "Pythonで作成したExcel" # A1セルに文字列を入力 new_book.save(file_path / "new_excel.xlsx") # 「new_excel.xlsx」というファイル名で保存
7行目で、ファイル名に保存先のフォルダパスを結合して渡しています。
これにより、workbooks
フォルダの中に new_excel.xlsx
が保存されます。
まとめ|Excel新規作成と保存先指定の基本
この記事では、PythonでExcelファイルを新規作成する方法 を学びました。
Workbook()クラス
:新しいExcelブックを作成- activeプロパティ:アクティブなシートを取得
- セルオブジェクト[]:セルにデータを読み書き
save()
メソッド:Excelファイルとして保存pathlib
ライブラリ:スクリプトの場所を基準に保存先を指定
これにより、Excelファイルを 任意の場所に自動生成して保存する仕組み を作れるようになりました。
次回は、この基礎を応用して Excelからデータを読み込む方法 に進んでいきます。