This blog has moved to
http://blog.matthias-reining.com

Die bestehenden Artikel bleiben vorerst alle bei blogspot. Neue Artikel veröffentliche ich allerdings nur noch auf http://blog.matthias-reining.com

Montag, 19. Juli 2010

Steb By Tab - Fehler- und Abbruch-Tracking bei formularasierten Webprozessen

In der Ausgabe 7-8/2010 des Magazins Website Boosting ist hierzu ein recht interessanter Artikel. In dem Artikel wird gezeigt wie man in JEE Systemen Fehler auf Feldebene und Abbruchfehler (User verlässt die fehlerhafte Seite) in etracker protokollieren kann.

P.S. Ruhig mal auf den Autor achten ;-)

Freitag, 2. Juli 2010

POI - SVERWEIS und die Exception Unexpected eval type (org.apache.poi.hssf.record.formula.eval.MissingArgEval)


Seit ein paar Tagen gibt es etwas neues von der POI API – Seit 20. Juni 2010 die Version POI 3.7 beta 1.

Die ersten Experimente haben hiermit perfekt funktioniert! J

Nachdem ich allerdings einen SVERWEIS (englisch : VLOOKUP) verwendet habe und ein abhängiges Feld per POI API neu berechnen lassen habe, ist folgender Fehler aufgetreten:

java.lang.RuntimeException: Unexpected eval type (org.apache.poi.hssf.record.formula.eval.MissingArgEval)
       at org.apache.poi.hssf.record.formula.functions.LookupUtils.resolveRangeLookupArg(LookupUtils.java:422)
       at org.apache.poi.hssf.record.formula.functions.Vlookup.evaluate(Vlookup.java:57)
       at org.apache.poi.hssf.record.formula.functions.Var3or4ArgFunction.evaluate(Var3or4ArgFunction.java:36)
       at org.apache.poi.ss.formula.OperationEvaluatorFactory.evaluate(OperationEvaluatorFactory.java:132)
       …

Der Fehler ist an folgender Stelle aufgetreten:
...
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
HSSFRow row = sheet.getRow(7);
HSSFCell cell = row.getCell(1);
CellValue cellValue = evaluator.evaluate(cell);
...

Die Ursache hierfür ist, dass ich im Excelsheet die Formel mit dem SVERWEIS per Autocomplete erstellt habe. Der letzte Parameter des Befehls SVERWEIS „Bereich_Verweis“ wird dann mit WAHR bzw. FALSCH per Autocomplete gefüllt. Wenn man sich dann die Formel allerdings nochmal genauer anschaut, stellt man fest, dass der letzte Parameter bei WAHR einfach nicht geschrieben wird. Excel arbeitet mit einem Defaultwert.

Die POI API kommt hiermit aber nicht zurecht! Hier muss der Parameter Bereich_Verweis explizit gesetzt werden. Für WAHR muss hier eine 1 gesetzt werden.

Anschließend funktioniert die Berechnung auch wieder einwandfrei J