Hallo Marcel,
danke fürs Testen und deinen Input!!!
Es gab mit dem CSV-Export zuletzt das Problem, dass die Label für die visForms-eigenen Spalten überhaupt nicht durch das iconv gingen und dies bei den deutschen Texten mit Umlauten dazu geführt hat, diese diese nicht in den Windows-Zeichenstatz konvertiert wurden und es beim Öffnen mit Excel deshalb Probleme gab.
Da ich wusste, dass ich für das nächste große Visforms-Subscription Feature Release (3.4) den CSV-Export weiter ausbauen wollte, nämlich dahingehen, dass man auch vom Frontend aus Daten nach CSV exportieren kann und ich deshalb den ganzen Export-Code refaktoren werde, habe ich einfach schon mal dahingehend angefangen, dass ich die entsprechende Struktur geschaffen habe und diese für die visForms-eigenen Felder also, meinen Bugfix, auch verwende. Das große Refactoring des Codes für die eigentlichen visForms-Daten habe ich aber noch nicht ausgeführt. Deshalb ist der Code so verstreut (auf des model/visdatas und die neue Helper-Klasse). Das ist wirklich unfertig.
Aus deinem Test entnehme ich, dass mein Code, der das von dir untersuchte Problem fixen soll, wie erwartet funktioniert. Ich muss aber tatsächlich auch das Model noch anpassen. Ich werde also den Fix übergangsweise an dieser Stelle auch noch einbauen.
Code:
public function createExportCell($row, $type = Null, $params = Null, $prop = Null) {
...
if ((!function_exists('iconv')) || (isset($params->usewindowscharset) && ($params->usewindowscharset == 0))) {
$unicode_str_for_Excel = $row->$prop;
}
else {
if (!(false === (bool) (iconv("UTF-8", "windows-1250//TRANSLIT", $row->$prop)))) {
// convert characters into window characterset for easier use with excel
$unicode_str_for_Excel = iconv("UTF-8", "windows-1250//TRANSLIT", $row->$prop);
}
else {
$unicode_str_for_Excel = $row->$prop;
}
}
...
}
Das ist jetzt zwar nicht besonders elegant, sollte aber als Übergangslösung funktionieren und wird mit visForms 3.12.10 released.
Ab visForms 3.13/Subscription 3.4 wird dann der gesamte Code für den CSV-Export sauber über die Helper-Klasse laufen.
Hinsichtlich der Verwendung der php-eigenen fputcsv() bin ich nicht so überzeugt. Die Hauptarbeit besteht eigentlich darin, die Daten richtig zu prozessieren und der Delimiter war für mich eigentlich nur marginal. Aber vielleicht sehe ich das ja irgendwann auch mal anders. Danke auf jeden Fall für deinen Hinweis.
Gruß,
Aicha