我该怎么做才能使这项工作?该程序成功执行,但是
如果(sh2.cell(r + 1,c).value)> 500:此错误并显示此错误,则在'NoneType'和'int'实例之间不支持'>'。大于$ 500并在Excel中对单元格进行颜色编码。
import openpyxl
from openpyxl.styles import PatternFill
wb1 = openpyxl.load_workbook("C:\\Users\\Ricky\\Desktop\\UpdatedStock_ex2.xlsx")
sh2 = wb1.active
for r in range(1,sh2.max_row+2):
for c in range(1,sh2.max_column+1):
if (sh2.cell(row=1, column=c).value) == "Price":
if (sh2.cell(r+1,c).value) > 500:
print(sh2.cell(r+1,c).value)
sh2.cell(r+1, c).fill = PatternFill("solid","71FF35")
wb1.save("C:\\Users\\Ricky\\Desktop\\UpdatedStock_ex2.xlsx")
print("file Saved")
if (sh2.cell(r+1,c).value) > 500:
-如果sh2.cell(r+1,c).value
为None
,则将引发异常(Python等效于null)。
该值很可能包含,None
因为您在循环中抛出了sh2.max_row+2
(您可能不需要+ 2)
解决此问题的一种方法是始终使用来检查值是否不为null if sh2.cell(r+1,c).value and ...
。例如if sh2.cell(r+1,c).value and (sh2.cell(r+1,c).value) > 500:
或者,您可以使用or
运算符将默认值设置为0 。例如:if (sh2.cell(r+1,c).value or 0) > 500:
import openpyxl
from openpyxl.styles import PatternFill
wb1 = openpyxl.load_workbook("C:\\Users\\Ricky\\Desktop\\UpdatedStock_ex2.xlsx")
sh2 = wb1.active
for r in range(1,sh2.max_row+2):
for c in range(1,sh2.max_column+1):
if (sh2.cell(row=1, column=c).value) == "Price":
# Commented out line below to check not None and value is greater than 500.
# if sh2.cell(r+1,c).value and (sh2.cell(r+1,c).value) > 500:
# Code below will convert None to 0 and prevent exception.
if (sh2.cell(r+1,c).value or 0) > 500:
print(sh2.cell(r+1,c).value)
sh2.cell(r+1, c).fill = PatternFill("solid","71FF35")
wb1.save("C:\\Users\\Ricky\\Desktop\\UpdatedStock_ex2.xlsx")
print("file Saved")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句