我怎样才能避免dntypes.ExcelErrorName()

时间:2014-10-16 03:46:37

标签: datanitro

在我的电子表格中,我的单元格包含一个字符串,例如

=some string here

如果格式化为常规,Excel将显示此单元格。这是有道理的,因为Excel正在尝试计算具有不存在的函数的单元格

#Name

DataNitro将单元格值返回为(也是有意义的)

dntypes.ExcelErrorName()

我可以手动将单元格指定为文本,Excel随后会显示该字符串,DataNitro会返回该字符串。然而,对于我需要的细胞数量来说,这是不可行的。

即使我尝试跳过这些单元格,我也无法像其他大多数类一样检查类型

type("a") == str
True

但是检查dntypes.ExcelErrorName会返回

dntypes is not defined

如何用其他值替换这些单元格,或将它们格式化为明文?

修改

写了一个函数来处理这些值,但我宁愿只将它用作临时修复

def errorfix(row):
for i,value in enumerate(row):
    if type(value).__name__ == "ExcelErrorName":
        row[i] = "EXCEL NAME ERROR"
return row

1 个答案:

答案 0 :(得分:0)

您可以通过此功能传递值:

def get_text(val):
    if not isinstance(val, ExcelError):
        return val

    if type(val) == ExcelErrorDiv0:
        return "#DIV/0!"

    if type(val) == ExcelErrorNA:
        return "#N/A"

    if type(val) == ExcelErrorName:
        return "#NAME?"

    if type(val) == ExcelErrorNull:
        return "#NULL!"

    if type(val) == ExcelErrorNum:
        return "#NUM!"

    if type(val) == ExcelErrorRef:
        return "#REF!"

if type(val) == ExcelErrorValue:
    return "#VALUE!"

raise TypeError("Unknown Excel Error")

isinstance(val, ExcelError)是检查某些内容是否错误的最佳方法。 如果您经常这样做,您可能希望创建一个Cell的子类,只要您调用value,就可以执行此操作。