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 に答える