Python Tech xlwings

Python xlwingsでのExcelブックの接続方法一覧

xlwings はPythonからExcelを操作できるフリーライセンスのライブラリです。

xlwingsを使うと、Excelで開いているブックを判別したり、名前を指定してファイルを開くなど、ブックとの接続を簡単に実装できて便利です。

  • アクティブなブック
  • 開かれているブックから名前を指定して接続
  • 新規のブックを作成、編集
  • ファイル名を指定して開く(+読み取り専用)
  • パスワード付きファイルをPythonから開く

今回はxlwingsを使ってPythonからExcelブックを開く方法を一覧でまとめています。後で見返すブックマーク用としてご活用ください。

 

実行環境

$ python --version
Python 3.9.4

$ pip freeze
xlwings==0.20.5

 

アクティブなブックに接続

以下のように、開いているExcelブックのオブジェクトBookを取得するには、xlwings.booksメンバのactiveを参照します。

Excelが起動していないと、activeを取得する対象(App)がNoneとなるので1行目でエラーとなります。

wb = xw.books.active
sht = wb.sheets.active
print(sht.range('A1').value)
# hoge

 

開かれているブックから名前を指定して接続

画像のように、複数のブックが開かれているときに、特定のブックに接続しBookを取得するには、books['ブック名'] とします。

指定したブック名が見つからないときにはKeyErrorとなります。

wb = xw.books['hoge_zoo.xlsx']
sht = wb.sheets[0]
print(sht.range('A1').value)
# zoo

 

新規のブックを作成、編集

新規のブックを作成し、そこにデータを更新していく場合はbooks.add() を呼びます。戻り値が Book オブジェクトなので、これを使って Sheet を取得します。

wb = xw.books.add()
sht = wb.sheets[0]
sht.range('A1').value = 'foo'
print(sht.range('A1').value)
# 'foo'

 

ファイル名を指定して開く

既存のExcelファイルを開くこともできます。

ファイルパス(ファイル名)を指定してブックを開くにはbooks.open()を用います。

ファイルパスは相対パス、絶対パスのどちらでも問題ありません。

wb = xw.books.open('./data/hoge.xlsx')
sht = wb.sheets[0]
sht.range('A1').value = 'updated!'
print(sht.range('A1').value)
# updated!

 

読み取り専用で開く

読み取り専用としてブックを開くには open() の引数 read_only=True を渡します。

Excelの画面を見ると、読み取り専用で開いているのが確認できると思います。

最後に Book.save() すると、エラーが出ないので一見すると更新されているようにみえますが、データは更新されません。

wb = xw.books.open('./data/hoge.xlsx', read_only=True)
sht = wb.sheets[0]
sht.range('A1').value = 'foobar'
wb.save()
# エラーにはならないが、値は更新されない

 

パスワード付きファイルをPythonから開く

閲覧パスワード付きの暗号化Excelファイルも xlwings経由で開けます。

open() の引数password に文字列でそのまま渡します。

p = 'passw0rd'
wb = xw.books.open('./data/hoge_password.xlsx', password=p)
sht = wb.sheets[0]
print(sht.range('A1').value)
# protected

 

ブックの閉じ方

接続しているBookを閉じるにはBook.close()を呼びます。

保存されていなくても、確認ダイアログやエラーは出ません。保存されていない内容は消去されるので注意が必要です。

wb = xw.books.add()
sht = wb.sheets[0]

import time
time.sleep(2)

wb.close()

 

今回参考にしたページ・資料

class xlwings.Book Python API - xlwings Documentation

  • この記事を書いた人

次世代ペンギン

長いのでペンギンとお呼びください。システム開発・プログラミングのお仕事をしています。甘味とコーヒーは生命線。多くの人に役立つ情報のシェアが目標です。

人気の記事

1

会社員でプログラマーとして働いている人、インフラやネットワークのエンジニアとして働いている人の中には、フリーランスのプログラマーとして独立、もしくは転向したい人もいるので ...

2

キャリアアップのため、または高収入を目指して、しっかりプログラミングを学びたいという人が増えてきましたね。 この記事では現役のエンジニアである私が、実際に仕事で稼げるよう ...

3

フリーランスのプログラマーにとって収入の向上に最も直結するのはスキルです。 必要なスキル、スキルの獲得方法が気になる人も多いでしょう。 また、これからフリーランスを目指す ...

4

Vuetifyの v-progress-circular コンポーネントは、数値データや処理状況を環状(円状)のデザインで教えてくれるUIデザインです。 ローディングのス ...

5

Vuexのstore(ストア)を使うと、各コンポーネント間で個別にデータのやり取りすることなく、データを一元的に管理できます。Vueでは欠かせない機能といえるでしょう。 ...

-Python, Tech, xlwings
-, , ,

© 2021 ペンギンのーと