【業務自動化】チャプター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ファイルを作成し、セルに文字を書き込み、ファイルとして保存 する方法を学びます。

まずは実際のサンプルコードを確認してみましょう。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

サンプルコードで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はメモリ上に存在するだけで、まだ保存はされていません。

あわせて読みたい
【Python】レッスン5-01:クラスの基本を理解しよう
【Python】レッスン5-01:クラスの基本を理解しよう

シートの取得|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」という名前で保存しています。

保存先はスクリプトを実行したフォルダ(カレントディレクトリ)です。

【Python】勉強猫がノートパソコンを見ながら考え込む様子。記事内の休憩用イラスト

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からデータを読み込む方法 に進んでいきます。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいExcel自動化学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

業務自動化の記事一覧

次のページ>>

記事URLをコピーしました