2016-11-11 75 views
1

私はこの同じ質問の多数のバージョンを流しましたが、セルのグループをループし空のセルをチェックするための実用的な解決策を見つけることはできません。OpenPyXlで空のセルをチェックする

は、ここに私のコードです:

wb = openpyxl.Workbook(write_only=False) 
sheet = wb.get_sheet_by_name('Sheet') 
for i in range(1, 20): 
    if sheet.cell(row=i, column=1).value == None or 'None': 
     print('Space' + str(i)) 
     sheet.cell(row=i, column=1) = i 
    else: 
     pass 

wb.save('filename.xlsx') 

しかし、いくつかの理由では、空のセルへの書き込みをし、それらに書き込まれた値を持っていた細胞を上書きします。

ループをコメントアウトします。コードを実行すると、手動でスプレッドシートに書き込まれたすべてが消去されてしまうことがわかります。多分それは問題の一部ですか?それはチャーリーが述べてどのような違い

+0

if文の2番目の部分は常に「True」と評価され、既存のセルを上書きします。 –

答えて

3

はもちろん正しい行った場合

また、私はLibreOfficeのを使用しています。 Pythonで

非空の文字列のセルの値がNoneまたはbool('None')場合ではない場合、あなたが実際にテストしている、と後では常にTrueあり、したがって、あなたの状態は常にTrueに評価されて、Trueに評価されます。

具体的なケースに対処するために、なぜ空セルを'None'でテストしようとしているのかわかりません。

あなたが本当にあなたの条件は次のようになります。これを行うにしたい場合は:あなたはNoneまたは空の文字列のためのテストをしたい場合は

if sheet.cell(row=i, column=1).value in [None,'None'] 

、そうNone or ''は、その後の進路あなたの条件は次のようになります。

if sheet.cell(row=i, column=1).value in [None,''] 

これは正しい軌道に乗ることを望みます。

+0

ありがとうございます。それは魅力のように働いた。 –

関連する問題