xlwingsを使ってエクセルに値を書き込みしたいんだけど、
やり方がわからない…。
なるほど…。
では今回は、
「xlwingsでエクセルに値を書き込みする方法」
をできるだけわかりやすく解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
xlwingsでエクセルに値を書き込みするには
「.value」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅いたします。解説は後ほど行います。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
worksheet['A1'].value = 'utatane'
worksheet['A1'].value = 'utatane'
xlwingsの処理は、予想以上に時間がかかることがあります。
プログラムの最後に「print(‘実行完了’)」などを追記し、完了したのを確認してから結果を見ましょう。
事前準備
- xlwingsのインストール
エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。
xlwingsのインストール方法
xlwingsを初めて使用する場合は、下記コードを入力・実行して、インストールを完了させましょう。
pip install xlwings
※xlwingsを使用したことがある場合は、このインストール作業は不要です。
インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~シートの取得
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
上記コードにて、
「xlwingsのインポート」「アクティブブックの取得」「アクティブシートの取得」
を行っております。
詳細は下記記事をご参考ください。
値の書き込み
ここからが本題です。
下記一文にて、取得したシートのセルに値を書き込みしています。
worksheet['A1'].value = 'utatane'
左辺には、取得したシートと書き込むセルを指定し、「.value」を付けます。
右辺は、書き込みしたい値を記述してください。
【「worksheet」の「セルA1」の値(value)に「utatane」を設定する】という解釈でOKです。
値が文字列の場合は、「’(シングルクォーテーション)」か「””(ダブルクォーテーション)」で囲むようにしてください。
<テンプレ1>
【 シートが入った変数[‘書き込みたいセル名’].value = ‘書き込みたい文字列‘ 】
書き込みしたい値が数値の場合は、「’」や「”」で囲む必要はありません。
<テンプレ2>
【 シートが入った変数[‘書き込みたいセル名’].value = 書き込みたい数値 】
編集したファイルを保存する方法は、別の記事で解説しておりますので、ご参考ください。
値の書き込み方法
前項で紹介した方法以外にも、セルに値を書き込みする方法があります。
変数を書き込み
値を直接書き込むのではなく、ひとまず変数に入れてから、その変数内の値を書き込みすることができます。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
a1 = 'utatane'
worksheet['A1'].value = a1
6~7行目に注目してください。
a1 = 'utatane'
worksheet['A1'].value = a1
6行目で「a1」という変数に「utatane」という文字列を入れています。
7行目では、その「a1」を「セルA1」に書き込みすることで、「utatane」という文字列が「セルA1」に入ります。
※7行目右辺の「a1」は変数なので、「’」で囲う必要はありません。
別の指定方法で書き込み
セル指定を下記のようにしても書き込みできます。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
worksheet[0, 0].value = 'utatane'
6行目をご覧ください。
worksheet[0, 0].value = 'utatane'
[0, 0]は「セルA1」に該当します。
左側は行番号(○行目)、右側は列番号(○列目)を指定してください。
[1, 0]なら「セルA2」、[0, 2]なら「セルC1」といった具合です。
<テンプレ>
【 シートが入った変数[行番号, 列番号].value = ‘書き込みたい文字列’ 】
【 シートが入った変数[行番号, 列番号].value = 書き込みたい数値 】
行番号・列番号は「0」から始まりますので、ご注意ください。
もちろん変数に入った値を書き込みすることもできます。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
a1 = 'utatane'
worksheet[0, 0].value = a1
さらには、セル指定も変数を利用することができます。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
row = 1
col = 2
c2 = 'utatane'
worksheet[row, col].value = c2
上記の例では、結果的に[1, 2]の指定となりますので、「セルC2」に値を書き込みできます。
うまく動作しない時
エラーが出る
‘NoneType’ object has no attribute ‘books’
エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
空のブックが生成される・残る
作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。
対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。
作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。
最後に
xlwingsでエクセルに値を書き込みする方法を解説いたしました。
当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じたら、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!