1

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

=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
4

1 回答 1

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 时创建一个子类来执行此操作。

于 2014-10-16T17:25:15.033 回答