Fehlermeldung: NonNumericalException: Can't convert this string to number

Diese Fehlermeldung bedeutet, das ein Wert nicht korrekt als Zahl konvertiert werden konnte.

Häufige Fehlerquellen:

  1. Am häufigsten erscheint der Fehler wenn eine Spalte „leer“ ist. Ob es sich um ein leeren Wert handelt erkennen Sie daran das in der Fehlermeldung nur „“ (Zwei Hochkommata) angezeigt wird.

  2. Eine weitere Fehlerquelle ist, dass die Spalte am Anfang/Ende ein Leerzeichen oder ein Zeilenumbruch enthält.

Beispiel:

Sie benutzen einen Spreadsheetfilter und überprüfen eine Spalte in eines Spreadsheets, ob ein Wert größer/gleich 100 ist:

Beispiel Spreadsheetfilter:

Preis!?number >= 100

oder Texthtmlwriter:

${Preis!?number}

Ist eine Zeile in der entsprechenden Spalte leer oder der Wert ist keine Zahl dann tritt dieser Fehler auf.

Problemlösung:

In den meisten fällen reicht aus die leeren Zeilen vorher herauszufiltern. Dafür können Sie einen Spreadsheetfilterstep mit der Freemarkeranweisung verwenden:

Spalte! != "" 

Mit der Filterbedingung können Sie alle Werte herausfiltern die nicht als Zahl gelten:

isNumber(Spalte)

Beispiel mit einer komplexen IF/ELSE Bedingung

Bedingung:

<#if (value1!?number < value2!?number )>1<#else>0</#if>

Wenn value1 oder value2 leer sein können, dann führt das zur obigen Fehlermeldung (weil ein leerer Wert nicht als Zahl erkannt wird).
Um das zu beheben, können müssen Sie in der Bedingung noch prüfen, ob der Wert wirklich eine Zahl ist (also, dass der Wert auch nicht leer ist).

Die erweiterte Bedingung könnte so aussehen:

<#if (isNumber(value1) && isNumber(value2) && value1!?number < value2!?number )>1<#else>0</#if>

Die Funktion isNumber(value) übernimmt genau diese Prüfung.