pythonからエクセルにデータを入力

Python

pythonで解析を行ったものをエクセルに出力したい事ってありますよね。

今回は、pythonからエクセルにデータ出力をする方法を紹介します。


エクセルを扱うライブラリー xlwings

pythonからエクセルを操作するライブラリー、私は初めpywin32を使ってみたのですが問題が起こったときに調べようとしてもなかなかいい情報が得られない。という事で、今ではxlwingsを使っています。

そこで、今回はxlwingsを紹介します。


インストール

インストールはいたって簡単

コマンドプロンプトを立ち上げて、

pip install xlwings

もしくは

conda install xlwings

これだけです。仮想環境を構築している方は、仮想環境をアクティベートしてから行ってください。

なお、anacondaのベース環境を使っている方はanacondaに含まれているらしいのでインストールの必要はないようです。


使い方

使い方はすごくシンプルです。

エクセルを立ち上げる


import xlwings as xw


wb = xw.Book()

この2行だけでエクセルが立ち上がってくれます。


文字の入力

そうしたら、シートを指定し、セルを指定してあげます。

そこにどの値を入力するかを指定してあげるだけです。


import xlwings as xw


wb = xw.Book()
sht = xw.sheets[0]
sht.range("A1").value = 'TEST_A1'
sht.range("C5").value = 'TEST_C5'

リストを入力

続いて、リストを一気に入力してみます。


import xlwings as xw

coment =['slice1', 'slice2', 'slice3', 'slice4', 'slice5', 'slice6']

wb = xw.Book()
sht = xw.sheets[0]
sht.range("A1").value = coment


リストを縦方向に入力

今度は、縦方向に入力してみます。

optionsで指定をします。


import xlwings as xw

coment =['slice1', 'slice2', 'slice3', 'slice4', 'slice5', 'slice6']

wb = xw.Book()
sht = xw.sheets[0]
sht.range("A1").options(transpose=True).value = coment


2次元のリストを入力する場合 横方向に入力

for文を使って入力していくのが簡単です。

その際に、オプションとしてoffsetを用います。


import xlwings as xw

coment =[['slice1_1', 'slice1_2', 'slice1_3', 'slice1_4', 'slice1_5', 'slice1_6'],
         ['slice2_1', 'slice2_2', 'slice2_3', 'slice2_4', 'slice2_5', 'slice2_6'],
         ['slice3_1', 'slice3_2', 'slice3_3', 'slice3_4', 'slice3_5', 'slice3_6'],
         ['slice4_1', 'slice4_2', 'slice4_3', 'slice4_4', 'slice4_5', 'slice4_6'],
         ['slice5_1', 'slice5_2', 'slice5_3', 'slice5_4', 'slice5_5', 'slice5_6']]

wb = xw.Book()
sht = xw.sheets[0]
for i in range(len(coment)):
    sht.range("A1").offset(i, 0).value = coment[i]
    

offsetは基準セルから以下の様に(縦、横)で指定します。

(-1,-1)(-1,0)(-1,1)
(0,-1)基準セル(0,1)
(1,-1)(1,0)(1,1)


2次元のリストを入力する場合 縦方向に入力

今度は、縦方向に入力していきます。


import xlwings as xw

coment =[['slice1_1', 'slice1_2', 'slice1_3', 'slice1_4', 'slice1_5', 'slice1_6'],
         ['slice2_1', 'slice2_2', 'slice2_3', 'slice2_4', 'slice2_5', 'slice2_6'],
         ['slice3_1', 'slice3_2', 'slice3_3', 'slice3_4', 'slice3_5', 'slice3_6'],
         ['slice4_1', 'slice4_2', 'slice4_3', 'slice4_4', 'slice4_5', 'slice4_6'],
         ['slice5_1', 'slice5_2', 'slice5_3', 'slice5_4', 'slice5_5', 'slice5_6']]

wb = xw.Book()
sht = xw.sheets[0]
for i in range(len(coment)):
    sht.range("A1").options(transpose=True).offset(0, i).value = coment[i]


終わり

以上、pythonからエクセルに入力する方法でした。

以下、xlwingのドキュメントです。

xlwings Documentation


タイトルとURLをコピーしました