FriendsOfREDAXO/tricks

YForm: Dataset-Export mit richtigen Umlauten für Excel

Closed this issue · 11 comments

akrys commented

Ein Kunde bemängelte bei mir gerade falsche Umlaute beim Dataset-Export. Nach etwas längerem Suchen habe ich den Extension-Point YFORM_DATA_TABLE_EXPORT gefunden, mit dem man die Daten bearbeiten kann, bevor sie in CSV konvertiert werden.

rex_extension::register('YFORM_DATA_TABLE_EXPORT', function(rex_extension_point $params)
{
	$subject = $params->getSubject();

	foreach ($subject as $key => $row) {
		foreach ($row as $column => $value) {
			$subject[$key][mb_convert_encoding($column, 'ISO-8859-1')] = mb_convert_encoding($value, 'ISO-8859-1');
		}
	}
	return $subject;
});

Ich müsste das textlich noch etwas feiner ausarbeiten, daher zunächst nur als Issue.

Hab Dank, das konnte ich gerade sehr gut gebrauchen.

Edit: Funktioniert bei mir nicht zuverlässig, es werden nicht alle Daten richtig konvertiert und Spalten erscheinen plötzlich doppelt in der Excel-Auswertung.

Edit2: Passiert, wenn das Tabellenfeld selbst einen Umlaut enthält.

d.h. es wir aktuell R4 verwendet und kein UTF8? oder ist der o.g. patch auch in R5 sinnvoll?

@staabm Redaxo 5 mit UTF8 erzeugt eine UTF8-CSV-Datei. Excel erwartet jedoch ISO.

ich kann mir nicht vorstellen dass Excel nicht mit UTF8 umgehen kann.. da fehlt sicher die UTF8 information in der Datei irgendwo..

@staabm Excel kann mit UTF8 in CSV umgehen, sofern dies als Datenimport in ein Tabellenblatt geschieht. Beim regulären "Doppelklick" auf die CSV-Datei wird diese von Haus aus als ISO-Datei interpretiert.

https://stackoverflow.com/questions/6002256/is-it-possible-to-force-excel-recognize-utf-8-csv-files-automatically

edit: Aber ja, es fehlt wohl auch ein Marker in der CSV-Datei: https://stackoverflow.com/questions/155097/microsoft-excel-mangles-diacritics-in-csv-files

Das öffnen einer CSV in Excel ist grundsätzlich nicht zu empfehlen. Da Excel es ohnehin nicht interpretieren kann, wenn man dem Programm nicht das Trennzeichen mitteilt.
Open/Libre-Office und Apple-Numbers sind da weitaus schlauer.

akrys commented

Das mag durchaus sein. Wenn ich als Entwickler die Daten exportiere, habe ich natürlich Einfluss darauf, wie ich die Datei öffne. Excel ist da sowieso nie die erste Wahl.

Wenn der Kunde das aber selber macht (bzw. machen soll), passiert reflexartig folgendes:

  • die Datei wird geladen
  • es wird doppelt drauf geklickt

Doppelt drauf klicken bedeutet in 99% der Fälle: Excel öffnet sich und versucht, die Datei darzustellen. Meist mit mäßigem Erfolg, wie wir alle wissen. Dem Kunden ist es dann auch egal, warum das schlecht ist und warum man das so nicht machen solle. Für ihn muss es einfach funktionieren. (Der Umweg über neue Datei anlegen, Import aufrufen, Einstellungen vornehmen, öffnen funktioniert zwar, verliert in Sachen Komfort aber kolosal gegen den einfachen Doppelklick)

Außerdem nutzen Kunden sehr oft Windows. (zu oft für meinen Geschmack, steht aber hier nicht zur Debatte) Da fällt Numbers als Alternative schon mal per se raus. Libre-Office kann man durchaus empfehlen, aber ob die IT-Abteilung des Kunden, sich darauf einlässt, es zu installiert und später auch mit Updates zu versorgen, steht auf einem ganz anderen Blatt. Zumal es ja nur dazu da ist, dass ein Mitarbeiter richtig mit CSV-Dateien arbeiten kann.
Im Regelfall kann man davon ausgehen, dass das nicht der Fall ist.

Daher habe ich den Tipp aus der Trickkiste hier mal als allerletzte Notlösung hinterlegt. Es ist natürlich sehr unsauber und sehr unschön. Das kann man natürlich noch weiter durchdiskutieren. Es bringt am Ende des Tages aber nichts. Der Kunde eine saubere Darstellung seiner Daten haben. Und zwar ohne den Export der Daten jedes mal seinem Dienstleister beantragen zu müssen.

Das sei im neusten YForm bereits gefixt.
yakamara/yform@d36baf2

ist das der Fall @alexplusde , kann das hier zu?

ungetestet

getestet ;)