【Python】Excel操作に欠かせないxlwingsの使い方を初心者向けに丁寧に解説

はじめに

Excelでのデータ集計やレポート作成に時間がかかり、効率化を考えたことはありませんか。

Pythonには、Excelと連携できるxlwingsという便利なライブラリがあります。

これを使うと手作業を大幅に減らせるので、業務効率の向上に役立つでしょう。

この記事を読むとわかること

  • PythonでExcelを操作するメリット
  • xlwingsの基本的な導入・設定方法
  • Excelからデータを読み書きする実用的なコード例
  • 業務に活用できる具体的な応用例

ここからは、初心者の方にも理解しやすいように、技術的な用語はできるだけわかりやすくかみ砕きながら進めていきます。

PythonとExcelを連携するメリット

PythonでExcelを扱う利点はさまざまです。 まず手作業の操作ミスを減らせるところが大きなポイントです。 特に複雑な数式や大量の行を含む表は、一つひとつセルを触るのが面倒ですよね。

Pythonでプログラムとしてロジックを書いてしまえば、何度でも同じ作業を自動的に実行できます。 これにより、作業時間の短縮が期待できるだけでなく、操作を定型化できるので品質が安定しやすいです。

また、Excelのファイルを操作するために特別なソフトウェアや外部サービスを用意しなくても、Pythonが動作する環境とExcelファイルがあれば事足ります。 導入コストが比較的低いのも魅力ではないでしょうか。

さらに、Pythonならではのデータ処理能力を組み合わせることで、Excel上のデータを活用した高度な分析も実現しやすくなります。 このように、PythonとExcelの連携は、業務改善やスキルアップの観点からも非常に有用な選択肢だと考えられます。

xlwingsとは何か?

xlwingsは、PythonからExcelの操作を行うためのライブラリです。 セルの読み書きはもちろんのこと、Excelのシート追加や削除などもできます。 VBAに似た操作感をPythonで実現できるイメージです。

例えば、業務でレポートを作成するとき、わざわざExcelを開かなくても、Pythonコードを走らせるだけでまとめて処理が可能になります。 ファイルの作成や読み込みといった基本的なところから、グラフの作成やマクロとの併用など、さまざまな機能をサポートしているのも特徴です。

一方で、初心者の方がいきなりすべての機能を使いこなす必要はありません。 まずはセルの読み書き、シートの操作あたりをゆっくり学ぶのが良いかもしれません。 後述するコード例を参考に、手を動かしながら試してみましょう。

xlwingsの基本的な使い方

事前準備

xlwingsを利用するには、Pythonがインストールされた環境があることが前提です。 その環境で、ターミナルやコマンドプロンプトを開き、以下のように入力してください。

pip install xlwings

この操作が完了すれば、Pythonコードの中で import xlwings as xw と書くことでExcelを操作できるようになります。

Windows環境だけでなくMac環境でも動きますが、Excelのアプリケーションが正しくインストールされていることを確認しておくと安心です。

簡単なコード例

次に、実際のコードでどのようにExcelファイルを操作するか見てみましょう。 下の例は、現在開いているExcelファイルのアクティブなシートを取得し、セルA1に書かれている内容を読み取るものです。

import xlwings as xw

# Excelのブックをアクティブブックとして取得
wb = xw.Book()  
sheet = wb.sheets.active

# セルA1の値を取得
value_a1 = sheet["A1"].value

print(value_a1)

ここでは、Excelファイルを新規で立ち上げるわけではなく、すでに開いているExcelブックを取得しています。 ブック(ファイル)やシートといった概念はExcelと同じなので、初心者の方でもイメージしやすいかもしれません。

Excelからデータを読み込む方法

シンプルな読み込み例

ExcelファイルをPython側で開き、そこに入力されているデータを参照する基本的な流れは以下のようになります。

import xlwings as xw

# Excelファイルを開く(ファイル名を指定)
wb = xw.Book("sample.xlsx")

# 取得したいシート名を指定
sheet = wb.sheets["SalesData"]

# セルA1からA5までの値をリストとして取得
data_range = sheet.range("A1:A5").value

print(data_range)

上記のコード例では、"sample.xlsx" というExcelファイルの "SalesData" というシートを開き、A1からA5のセルに入力された値を読み込んでいます。 読み込んだ結果は、Pythonのリストとして取得されます。

もしデータが連続する表形式になっているなら、sheet.range("A1").expand().value のように書くことで、空白行や空白列で区切られた範囲を自動的に取得できます。

読み込み時に注意するポイント

データが空白の場合や、セル内に数式が入っている場合など、想定外のパターンに遭遇することがあります。 そのような場合は、セルの値を実際にチェックしながらロジックを組むのが良いでしょう。

表が大きくなると読み込み範囲の指定を間違えやすくなります。 Excelシートの構造をあらかじめ把握しておくと、Python側での範囲指定もスムーズにできるようになります。

また、大きなファイルを扱うときは、読み込み自体に時間がかかることがあります。 そういった場合には必要な範囲だけを狙って読み取るなど、スクリプトの設計でカバーすると良いでしょう。

Excelへデータを書き込む方法

シンプルな書き込み例

次に、PythonからExcelシートに値を書き込む方法を紹介します。 基本的には読み込みと同じく、セルや範囲を指定して、値を代入するだけです。

import xlwings as xw

wb = xw.Book("report.xlsx")
sheet = wb.sheets["Result"]

# セルB2に文字列を書き込む
sheet["B2"].value = "売上データ集計結果"

# A1からA3の範囲にリストをまとめて書き込む
sheet.range("A1:A3").value = [10, 20, 30]

# ファイルを別名で保存したい場合
wb.save("report_modified.xlsx")

上記のように、指定したセルや範囲にPythonの変数やリストを割り当てることで、Excelファイルに書き込むことができます。 その後、save メソッドを呼ぶと、変更内容がファイルに反映されます。

書き込み時に注意するポイント

Excelファイルを開いている状態でPythonから書き込むと、読み取り専用の設定やアドインの影響を受ける可能性があります。 そのため、同時編集に注意が必要です。

また、書き込み先のシートが誤っているとデータが想定外の場所に上書きされてしまいます。 コードを書いたあとに一度テストとして少量のデータだけ書き込むなど、処理が正しく動いているかを確かめると安心かもしれません。

大量のデータを一度に書き込む場合、Excelが応答しなくなるといった現象が起きることもあります。 そういった状況を避けるためには、範囲を区切って複数回に分けて書き込む方法をとることも検討してみてください。

Excelの操作を自動化する実務シーン

Pythonとxlwingsを使うと、定期的に行うExcelでの作業をまとめて自動化できる可能性があります。

例えば、月次の売上データを各営業所ごとに集計し、その結果をExcelファイルに整形して保存するというシーンを想像してみましょう。 営業所ごとの売上データをシステムから取得してPython側で加工し、結果をExcelに書き戻せば、手動で何度もコピーペーストする手間が省けます。

また、Excelファイルでレポートを作成してグラフを自動的に作ることも可能です。 これによって、表とグラフを並べて評価しやすいレポートをワンクリックで準備できるようになるかもしれません。

さらに、複数のExcelファイルを連結したいときにもPythonで一括処理をする手段があります。 必要な列だけを抜き出して、別のExcelファイルにまとめて貼り付ける、といった流れもスクリプトで定義してしまえば簡単に再利用できます。

よくあるエラーと対処

Excelの構造やファイルパス、またはPython環境に起因して、エラーが出る場合があります。 特に初心者の方が戸惑いやすいのは、ファイルパスの設定が正しくないケースでしょう。 ファイル名だけでなく、フォルダのパスが間違っていると「FileNotFoundError」が発生します。 そういうときは、Pythonスクリプトの実行ディレクトリとExcelファイルが置かれている場所を再度確認してみてください。

もう一つは、ターゲットのシート名が存在しない場合です。 シート名のスペルや大文字小文字の違いなど、些細な違いでエラーが起きることがあります。 "Sheet1""SalesData" などの名前が正しく指定されているかをチェックしましょう。

システムの設定やExcelのバージョンが異なると、想定外のエラーが起きることもあります。 エラーメッセージを読んだり、エラーコードを手がかりに対処策を探ってみてください。

まとめ

PythonとExcelを連携するためのライブラリであるxlwingsを使えば、手作業を減らし、作業精度の向上を目指しやすくなります。

コード例からもわかるように、セルの指定やシートの扱いはExcelの知識があればイメージしやすいでしょう。 業務のなかで何度も繰り返す作業があるなら、思い切ってPythonスクリプトにまとめてみるのも一つの選択肢です。

初めは小さな手順でも良いので、少しずつ自動化していけば、気づいたときには大きな労力削減につながっているかもしれません。 特にデータの集計やレポート作成は、PythonとExcelの相性が良いと考えられます。

もしExcelの操作に慣れている方であれば、Pythonコードとの併用はそこまで難しくないはずです。 ぜひ本記事で紹介した使い方を参考に、身近なExcel業務に役立ててみてください。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。