#1 2019-08-01 09:12:39

nr
Member
Registered: 2018-06-29

Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo,

gibt es eigentlich einen Grund warum bei der Verwendung von Excel-Templates die Spaltenformate nicht exportiert werden?
Gerade im Falle von Datumswerten ist das unglücklich.

Man kann sich natürlich berechnete Felder in solchen Situationen bauen, mit Hilfe derer man die Umformatierung erzwingt, aber wirklich elegant ist das natürlich nicht.
Oder geht das irgendwie auch anders?



Beste Grüße
,rené


p.s.
(
Um den Report etwas einfacher zu halten, hatte ich zwischenzeitlich versucht, die Konvertierung wenigstens ins Template zu verlagern - quasi als Notlösung, um die berechneten Felder zu verhindern.
Der Versuch war aber leider nicht erfolgreich. Ich hatte via

$[DATE(LEFT(${row.feldname},4),MID(${row.feldname},5,2),RIGHT(${row.feldname},2))]
bzw.
$[DATUM(LINKS(${row.feldname};4);TEIL(${row.feldname};5;2);RECHTS(${row.feldname};2))]

probiert, ein YYYYMMDD String in ein Datum zu konvertieren. Das schlug fehl. Offenbar funktioniert diese Notation nicht mit den Platzhaltern.
Kann man ggf. irgendwie allgemein den "formatcells" Parameter von jxls verwenden, um Zellen/Spalten/Bereichen mitzuteilen, wie ihre Inhalte zu formatieren sind?

)

Offline

#2 2019-08-02 09:45:09

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo René,

handelt es sich um einen JXLS Report oder um einen JXLS Template-Export einer normalen dynamischen Liste ?

Und welche Version genau (rsversion.properties)

Gruss
Eduardo

Offline

#3 2019-08-06 12:35:35

nr
Member
Registered: 2018-06-29

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo Eduardo,

es handelt sich um eine Dynamische Liste und innerhalb dieser ist ein Template vom Typ JXLS hinterlegt (Dateierweiterung xlsm) - es geht also um den "Template-Export".

#Tue Jun 26 15:44:11 CEST 2018
version=RS3.0.3-6003
schemaversion=RS3.0-9
buildDate=1530020651312-2018-06-26-15-44-00



grüße
,rené

Offline

#4 2019-08-06 13:01:58

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hi René,

danke für die Infos,
eine kurze Frage noch dazu : geht es nicht, die Formatierung direkt im Excel Template festzulegen, mit Rechtsklick -> Zellen formatieren?
Ist das, was du bekommst, ein String oder ein Datum ?
Wenn das ein String ist, funktioniert das bei Daten ?

Gruss
Eduardo

Offline

#5 2019-08-06 14:34:37

nr
Member
Registered: 2018-06-29

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hi Eduardo,

im Excel-Template ist das Zellen-Format bereits auf den Typ Datum (mit der Formatierung DD.MM.YYYY) gesetzt.
Da aber das Datum als String YYYYMMDD angeliefert wird, kann Excel das vermutlich nicht interpretieren. Für Excel ist das also kein Datum, sondern Text mit einem Zielformat, das halt nicht passt.

Wählt man als Zellen-Format im Template YYYYMMDD, dann entsteht ein Datum innerhalb von Excel, aber eben nicht in der Anzeigeform, die man eigentlich wollte.
(((
btw. Offenbar hat Excel Probleme, mit dem YYYYMMDD-Format zu rechnen. Ein einfaches Minus erzeugt Unsinn. sad
Baut man sich aber eine Hilfszelle, die einfach nur den Feldwert des YYYYMMDD-Datum-Feldes übernimmt, aber als Format DD.MM.YYYY verwendet, dann klappt einerseits die Konvertierung und andererseits kann man mit solchen Ergebnissen auch rechnen.
)))

Über solche und andere Wege (und weitere Tabellenblätter) kann man vermutlich alles zurecht biegen, aber das wäre genauso "einfach" wie das Umformatieren des Datums mit einem berechnetem Feld via:

substr(feld_name,7,2) || '.' || substr(feld_name,5,2) || '.' || substr(feld_name,1,4)

Es ist also möglich, aber sobald man das häufiger macht, wird es aufwendig.



Ich habe mal testweise andere Formatierungen der Listenkonfiguration probiert und diese wurde alle nicht im Fall des Excel-Templates übernommen. Exportiert man nach Excel klappt das.
Wird ggf. das Spaltenformat generell nicht berücksichtigt, wenn man Template-Export wählt?



grüße
,rené

Last edited by nr (2019-08-06 14:36:30)

Offline

#6 2019-08-09 07:15:02

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo René,

wir schauen uns das im Ticket RS-3594 an.

Gruss
Eduardo

Offline

#7 2019-08-09 09:04:04

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hi René,

ich sehe das Problem. Ich denke, das ist ein Bug: die Formatierung wird beim JXLS Export wohl nicht berücksichtigt, wie du auch festgestellt hast. Ich melde mich, wenn ich mehr Infos dazu habe.

Gruss
Eduardo

Offline

#8 2019-08-09 09:40:32

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hi René,

als workaround kannst du in deinem JXLS Template eine versteckte Hilfsspalte z.B. A2 hinzufügen, und dich dann auf die Spalte beziehen: $[DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))]

Gruss
Eduardo

Offline

#9 2019-08-13 08:43:21

jalbrecht
Administrator
Registered: 2016-10-21

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo René,

nach näherer Betrachtung des Problems sind wir der Meinung dass die jetzige Implementation "richtig" ist. Hierbei ist verwirrend, dass die Formatierung auf der dynamischen Liste nur für den Excel Export und nicht für das Template gilt. Das sollten wir evtl. noch deutlicher in der GUI machen. An sich ist dieses Verhalten aber richtig, da im Template für korrekt angelieferte und von Excel entsprechend erkannte Daten (-Typen möchten wir hier aus gutem Grund nicht sagen) alle Möglichkeiten der Formatierung gegeben sind. Würden wir hier die Formatierung aus der dynamischen Liste "dazwischen" schieben wäre das wohl verwirrender. Ausserdem würde im Template das Ergebnis der Formatierung angeliefert werden müssen. Wir würden also etwas anderes als die Rohdaten liefern und das würde von Excel in anders behandelt werden ... . Das Problem würde nicht gelöst sondern nur verlagert werden.

Viele Grüße
Jan & Eduardo

Offline

#10 2019-08-15 14:24:33

nr
Member
Registered: 2018-06-29

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hallo Jan, hallo Eduardo,

bei für Excel-Nutzer üblichen Zahlenwerten (im 10-er System) sind Probleme rar, da es abgesehen von der Punkt/Komma-Problematik wenige alternative Notationen mit Kollisionspotential gibt.
Entsprechend einfach kann das Excel parsen und speichern. Würde man für Zahlen RS-Formatierungen übergeben, bestünde tatsächlich das Problem, dass Zahlen dann nicht mehr als Zahlen erkannt werden.

Bei Datumswerten besteht das Kernproblem nun gerade darin, zunächst den Datentyp richtig zu erkennen und genau hier gibt's notationsbedingt ein riesiges Konfliktpotential. Einen Teil kann Excel selbständig auflösen/erkennen, aber spätestens wenn das Ausgangsformat eine Form wie z.B. YYYYMMDD aufweist, ist nicht mal mehr entscheidbar, ob es sich um eine Zahl oder ein Datum handelt. (Meine Beobachtung aus #5 sind etwas seltsam, da die Differenz zweier Zahlen dennoch das richtige Ergebnis hätte liefern müssen - was auch immer Excel in diesem Fall genau macht, weiß wohl nur M$.)
Unglücklicherweise wäre die Notation selbst dann nicht eindeutig erkennbar, wenn anhand der gewählten Formatierung in Excel der Typ "Datum" abgeleitet wird, da bspw. 20101410 sowohl als 14.10.2010 als auch der 20.10.1410 interpretiert werden kann.

Ok … das klingt nach Schach-Matt. wink Aber! Durch Normierung kann man den Problemen entkommen und verursacht auch keine Problemverlagerung.

Was kann man tun?
Wurde im Reportserver in der Listenkonfiguration für ein Attribut die Formatierung Datum gewählt, kann man solche Inhalte stets normiert an Excel übergeben. Das dürfte mutmaßlich auch der Erwartungshaltung aller User entsprechen.

Das Basisformat in der Listenkonfiguration lässt sich aufgreifen, z.B. (z.B. YYYY.DD.MM) und von diesem wird die normierte ISO-Form YYYY-MM-DD als Zielformat abgeleitet. Die ISO-Form kann Excel nach meiner Kenntnis sprachübergreifend korrekt interpretieren. An das Template übergibt man also ausschließlich normierte Datumswerte, die dann Excel immer korrekt als Datum erkennen kann.

Die eigentliche Darstellung eines Datums wird weiterhin innerhalb des Excel-Templates festgelegt und passt damit auch zu dem Ansatz für die Zahlenwerte. Verwirrungen dürfte das also nicht auslösen und ausgefallene Darstellungen bleiben möglich - quasi der komplette Excel-Datums-Fundus.

grüße
,rené

Offline

#11 2019-08-21 11:21:27

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Excel-Templates, JXLS, Spaltenformat wird nicht übernommen

Hi René,

wir schauen uns das in im Ticket RS-3594 noch einmal an.

Grüße,
Eduardo

Offline

Board footer

Powered by FluxBB