Home » Python » pandasの使い方 » pandasのDataFrameをxlwingsでExcelに書き込みする-xw.view()

pandasのDataFrameをxlwingsでExcelに書き込みする-xw.view()

動作検証バージョン:Windows 10 Pro(64-bit)+ 64bit Excel(バージョン2302 ビルド16130.20218 キック実行)+ Python 3.11.1(64-bit) + pandas 1.5.1 + xlwings 0.29.1

「pandas エクセル セル 書き込み xlwings」
とい検索キーワードでアクセスがありました。
pandasのDataFrameを、xlwingsを使ってExcelに書き込みを行うには、どのようなコードを書けばいいのかを調べていた方による検索でしょうか。

「xlwings range pandas」
という検索も、同じかもしれません。

[スポンサードリンク]

DataFrameをxlwingsでExcelに書き込むサンプル

xlwingsのview()関数を使えば、とてもシンプルなコードでpandasのDataFrameを簡単にExcelに出力できます。

import pandas as pd
import xlwings as xw

sample_data = {
 'Id':[1001, 1002, 1003, 1004],
 '名前':['太郎', '次郎', '三郎', '四郎'],
}
df = pd.DataFrame(data=sample_data)

xw.view(df)

上記のコードをJupyter等で実行すると、新規ブックが自動的に作成され下図のように

DataFrameが出力されます。

下図のようなDataFrameが、そのままExcelに出力され、Excelのテーブルになっています。

一旦Excelファイルを出力するといった手間もなく、とても簡単にDataFrameをExcelで確認できるわけです。

xlwings.view()はいきなり呼べる

view()関数の実体は、xlwingsパッケージのmain.pyモジュールに以下のように定義されていますが、

def view(obj, sheet=None, table=True, chunksize=5000):
 if sheet is None:
  sheet = Book().sheets.active
 else:
  sheet.clear()

 app = sheet.book.app
 app.activate(steal_focus=True)
 screen_updating_original_state = app.screen_updating

 try:
  sheet.book.app.screen_updating = False
  if pd and isinstance(obj, pd.DataFrame):
   if table:
    sheet['A1'].options(assign_empty_index_names=True, chunksize=chunksize).value = obj
    sheet.tables.add(sheet['A1'].expand())
   else:
    sheet['A1'].options(assign_empty_index_names=False, chunksize=chunksize).value = obj
  else:
   sheet['A1'].value = obj
  sheet.autofit()
 except:
  raise
 finally:
  sheet.book.app.screen_updating = screen_updating_original_state

xlwingsパッケージ直下の__init__.pyに

from .main import App, Book, Range, Chart, Sheet, Picture, Shape, Name, view, load, RangeRows, RangeColumns

とimport文が書かれているため、先ほどのサンプルのようにいきなり

xw.view(df)

と呼び出すことができます。

最終更新日時:2023-03-09 14:25

[スポンサードリンク]

Home » Python » pandasの使い方 » pandasのDataFrameをxlwingsでExcelに書き込みする-xw.view()

「pandasの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.