質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

499閲覧

Python エクセルの操作

sabotenn

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/11 14:22

Pythonでエクセルの読み出し、書き込みを実施しました。
1回目の実行ではエクセルの読み出し、書き込みができるのですが
同じプログラムで2回目を実施すると読み出し値がすべて『None』で返ってきます。

ただしそのエクセルを手動で開いて、手動でSAVEしなおすと
1回目と同じように読み書きできます。

下のプログラムのprint(all_syouhin)が2回目ですべてNoneで返ってきます。
2度目の実行でもエクセルファイルの読み書きが出来るように変更したいです。

wb=openpyxl.load_workbook('エクセルファイル',data_only=True)
sheet=wb['シート名']

all_syouhin=[]
for cell_obj in list(sheet.columns)[3]:
syouhin=[cell_obj.value]
all_syouhin = all_syouhin + syouhin
print(all_syouhin)

wb.close

#シートに書き込み
wb=openpyxl.load_workbook('エクセルファイル')
sheet1=wb['シート名']

ws = wb.active
sheet1["A1"] ="12"

wb.save('エクセルファイル名')
wb.close

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のコードで試してみましたが、2回目以降に読み出し値が None になるという現象が確認できませんでした。

環境

  • openpyxl: 2.5.6
  • Pyton: 3.6.5
  • Office 2016

データ

Sheet1 の A ~ C 列に以下の値を記載

excel

1data1 dat2 data3 21 1 1 32 2 2 43 3 3 54 4 4 65 5 5 76 6 6 87 7 7 98 8 8 109 9 9 1110 10 10 12

コード

python

1import openpyxl as xl 2 3xlsx_path = 'test.xlsx' 4 5# Excel ファイルを読み込む。 6wb = xl.load_workbook(xlsx_path, data_only=True) 7ws = wb.active 8 9# C列を読み込み 10for cell in ws['C']: 11 print(cell.value, end=" ") 12 # data3 1 2 3 4 5 6 7 8 9 10 13print(ws['A1'].value) # 12 14 15# セル A1 に 14 を書き込む。 16ws['A1'] = '14' 17 18# 保存する。 19wb.save(xlsx_path)

投稿2018/09/11 16:11

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sabotenn

2018/09/12 16:42

ありがとうございます。 シートに書き込みの下記を削除して同じプログラム内で同じエクセルファイルに対してopenpyxl.loadをなくしたら、再書き込みも問題なくできました。 削除した項目(sheet1 →sheetに変更) wb=openpyxl.load_workbook('エクセルファイル') sheet1=wb['シート名']
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問