Anzahl an Zeilen in einem Spreadsheet

Hallo,


ich versuche, die Anzahl an Zeilen in einem Spreadsheet in Freemarker zu ermitteln. Da die für mich am sinnvollsten erscheinende Lösung nicht macht, was ich will, frage ich einfach mal euch.


Folgendes Skript war mein erster Ansatz:

output@SpreadsheetFilter_56.getRows()?size

Das Ergebnis ist aber immer 8. Woher die Acht kommt, kann ich nicht so wirklich nachvollziehen.



Ich kann das zwar lösen, indem ich das ganze in eine Sequence konvertiere. Wirklich zufriedenstellend finde ich die Lösung aber nicht.

${output@SpreadsheetFilter_56.getRows()?join('-----')?split('-----')?size}

Gibt es eine bessere Lösung? Oder muss ich weiter die Kombination aus Join/Split benutzen?

Die Size der Spreadsheet-Zeilen aus einem Filter oder Mapper zu ermitteln ist schwierig(er), weil diese Outputs "lazy" sind. D.h. man muss erst einmal "durchgerannt" sein, bevor die size überhaupt erst bekannt ist. D.h. dein Ansatz mit ?join macht schon dieses "durchrennen". Aber es geht auch ohne join/split:



${output@SpreadsheetFilter_2.getRows()?sequence?size}


Siehe https://freemarker.apache.org/docs/ref_builtins_expert.html#ref_builtin_sequence