Seite 1 von 1
Verfasst: 12.01.2010, 14:41
von fischerm
Inzwischen bin ich wegen einer anderen Sache auf eine KB-Seite gestoßen, in der unter anderem erklärt, dass TAB der Standardtrenner für TXT-Dateien ist - und Excel in Abhängigkeit von der Dateiendung den Standardtrenner des jeweiligen Dateityps nutzt - exportiert man also eine TAB-getrennte Liste als \"liste.txt\", sollte Excel sie automatisch richtig importieren - nur kann man sie dann wiederum nur aus Excel heraus öffnen (Eine Zuordnung von Excel als Standardprogramm für *txt\'s wäre doch etwas zu viel verlangt).
Ich werde das auf jeden Fall bei Gelegenheit mal ausprobieren, da mein aktuelles Skript ca 2 Stunden braucht, um die exportierte CSV mit knapp 15.000 Datensätzen so vorzubereiten, dass der Export nach XLS reibungslos funktioniert :augenroll:
Und da TABs definitiv nicht in den Daten vorkommen, könnte ich mir dann die ganze String-Ersetzerei sparen :d_zwinker:
Verfasst: 08.01.2010, 12:51
von mirko
Das Problem mit Excel kenne ich schon.
Gut das mit den Anführungszeichen lässt sich einfach machen, wird es dann in der nächsten Version geben.
Verfasst: 08.01.2010, 11:20
von fischerm
Nach dem unser Mailversand-Projekt soweit abgeschlossen ist, gehts nun an die Auswertung der Geschichte (wir benutzen das Programm nicht als Newslettersoftware, sondern für ein Infomailing zu AGB-Änderungen, also nicht ganz so wie vorgesehen :biggrin: ).
Dabei müssen nun verschiedene Listen ausgewertet werden, was per VBS geschieht. Dabei ist mir ein \"Fehler\" aufgefallen, der zusammen mit einer Schwäche von Excel ein echtes Problem darstellt.
Erstmal zum Excel-eigenen Problem:
Öffne ich eine CSV mit Excel (z.B. per Doppelklick auf die Datei, Excel ist als zuständige Anwendung registriert), interpretiert Excel die Datei nur dann richtig, wenn als Feldtrenner ein Semikolon zum Einsatz kommt. Ansonsten landet alles in einer Spalte (mit einer Ausnahme, dazu aber später mehr).
Spreche ich aber die Datei mittels VBS und Excel an (also im Script via \"Excel.Application\" öffnen und mittels \".SaveAs\" als XLS speichern), erwartet Excel den amerikanischen Standardtrenner für CSV - also ein Komma.
Somit muss ich mich prinzipiell erstmal entscheiden: Lesbarkeit für den Menschen oder maschinelle Verarbeitung, aber beides geht nicht.
Da am Ende aber ein Script alle Daten in einer großen Exceldatei zusammenführen muss, steht die maschinenlesbare Form in Fokus. Nun kommen wir zu der bereits angesprochenen Ausnahme:
Im SM habe ich 3 Felder definiert, die den Zeitstempel des Versands, den Status-Code und die -Meldung speichern. In Letzterem steht dann bei uns immer \"OK, an Outlook weitergeleitet.\", aber ohne die Gänsefüschen. Und genau da liegt der Hund im Pfeffer, also der Hase begraben - oder so :sterne:
Das bewirkt z.B. eine Aufteilung in weitere Spalten, wenn ich Felder mit Kommas im Feldwert habe, der obige Text wird also z.B. zusätzlich in 2 Spalten aufgeteilt.
Umgehen kann ich das nur, indem ich die Daten mit dem Semikolon als Trenner exportiere und danach mindestens 2 mal ein Replace() über die Datei laufen lasse, um die Kommas zu maskieren (\",\") und dann die Trenner in Kommas zu ändern.
Um nun doch mal zum Punkt zu kommen:
Es wäre schön, wenn der Supermailer in Zukunft die Feldwerte von vornherein in Anführungsstriche einschließt, um solche Probleme gar nicht erst zu bekommen. :augenroll: