"unsupported operand type(s) for /: 'NoneType' and 'float' " 在 openpyxl 中
"unsupported operand type(s) for /: 'NoneType' and 'float' " in openpyxl
我正在尝试读取 Excel 文件中的列,并将数据写入 Python 中列的相应文本文件(使用 Openpyxl)。
Excel 文件中缺少一些数据,例如下面的第二列:
"gappy.xlsx":
350.2856445313 -424.5273132324 -322.6161499023
609.8883056641 -453.6102294922
780.6325683594 -628.981628418
这是我的代码:
import openpyxl
wb = openpyxl.load_workbook('gappy.xlsx', data_only = True)
ws = wb.active
factor = 1.0
for i in range (1,4):
with open('text'+str(i)+'.txt', "wt") as file_id:
for j in range (1,ws.max_row+1):
file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))
# I've also tried this, but I cannot write a file separately for each cloumn ...
# for column in ws.columns:
# for cell in column:
# print(cell.value)
# file_id.write('%f\n' % (ws.columns[i][0].value))
然后,我得到了这个错误:
TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
原因是第二列的空白被读作'None'。
我知道阅读第 2 列直到 'max_row+1' 是错误的,但我不知道还能做什么。
请告诉我如何解决这个问题。
提前谢谢你。
好吧,你可以在做除法之前检查两个参数不是 None。万一 None
以任何你想要的方式处理它。
像这样
if ws.cell(row = j,column = i).value is not None and factor is not None:
file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))
else:
# handle it in a different fashion
我正在尝试读取 Excel 文件中的列,并将数据写入 Python 中列的相应文本文件(使用 Openpyxl)。 Excel 文件中缺少一些数据,例如下面的第二列:
"gappy.xlsx":
350.2856445313 -424.5273132324 -322.6161499023
609.8883056641 -453.6102294922
780.6325683594 -628.981628418
这是我的代码:
import openpyxl
wb = openpyxl.load_workbook('gappy.xlsx', data_only = True)
ws = wb.active
factor = 1.0
for i in range (1,4):
with open('text'+str(i)+'.txt', "wt") as file_id:
for j in range (1,ws.max_row+1):
file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))
# I've also tried this, but I cannot write a file separately for each cloumn ...
# for column in ws.columns:
# for cell in column:
# print(cell.value)
# file_id.write('%f\n' % (ws.columns[i][0].value))
然后,我得到了这个错误:
TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'
原因是第二列的空白被读作'None'。 我知道阅读第 2 列直到 'max_row+1' 是错误的,但我不知道还能做什么。 请告诉我如何解决这个问题。 提前谢谢你。
好吧,你可以在做除法之前检查两个参数不是 None。万一 None
以任何你想要的方式处理它。
像这样
if ws.cell(row = j,column = i).value is not None and factor is not None:
file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))
else:
# handle it in a different fashion