!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
未分類

16-19. PythonでExcelの読み込みと書き込み

やること

PythonでExcelの読み込みと書き込みを試してみます。

実行環境

WinPython3.6をおすすめしています。

WinPython - Browse /WinPython_3.6/3.6.7.0 at SourceForge.net
Portable Scientific Python 2/3 32/64bit Distribution for Windows

Google Colaboratoryが利用可能です。

Google Colab

用意したExcel

しねしねこうせんは当時は字数オーバーだったようです。

インストール

必要なパッケージをインストールします。

pip install openpyxl

読み取り(単独セル)

一つのセルを読み取ってみます。

import openpyxl

#Excelファイルを開く
wb = openpyxl.load_workbook('Book1.xlsx', read_only=False, data_only=True)

#シートを開く
ws = wb['Sheet1']

#セル単体の読み取り
A1 = ws['A1'].value
print('A1\n{}'.format(A1))

#Excelファイルを閉じる
wb.close()
A1
インドぞう

ファイルを閉じるのを忘れないでください。

読み取り(横)

A1:D1を読み取ります。

#横の読み取り
for row in ws.iter_rows(min_col=1, min_row=1, max_col=4, max_row=1, values_only=True):
    A1_D1 = list(row)
print('A1_D1\n{}'.format(A1_D1))
A1_D1
['インドぞう', 'でも', 'きぜつ', 'する']

文字列として読み取られています。

読み取り(縦)

A1:A5を読み取ります。

#縦の読み取り
A1_A5 = []
for row in ws.iter_rows(min_col=1, min_row=1, max_col=1, max_row=5, values_only=True):
    A1_A5.append(row[0])
print('A1_A5\n{}'.format(A1_A5))
print(type(A1_A5[2]))
A1_A5
['インドぞう', 'も', 2, '秒で', 'fall down']
<class 'int'>

「2」だけちゃんとint形式で読み込まれました。これは親切ですね。

読み取り(行列)

A1:C4を読み取ります。

#行列として読み取り
A1_C4 = []
for row in ws.iter_rows(min_col=1, min_row=1, max_col=3, max_row=4, values_only=True):
    A1_C4.append(list(row))
print('A1_C4\n{}'.format(A1_C4))
print(type(A1_C4[1][1]))
A1_C4
[['インドぞう', 'でも', 'きぜつ'], ['も', None, None], [2, None, 'わざマシン'], ['秒で', None, 28]]

二次元リストとして読み込めました。空白セルはNoneType(’None’という文字列ではない)になっています。

書き込み

「C6」のように指定する方法と、row, col を指定する方法があります。その後保存することをお忘れなく。

#セルに書き込み(セル記号方式)
ws['C6'] = 'あなをほる'
wb.save('Book2.xlsx')

#セルに書き込み(セル数値方式)
ws.cell(row=4, column=3).value = 4242
wb.save('Book3.xlsx')

まとめ

なお、読み込みと書き込み(上書き保存)は、Excelファイルを開いた状態でプログラムを実行するとエラーになります。Excelは閉じた状態で行いましょう。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

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