PDA

Vollständige Version anzeigen : Escapen von Plus und Minus Zeichen in CSV Dateien


rednix
13.03.2009, 12:31
Hallo zusammen,

stehe vor folgendem Problem:

ich erstelle mit einer Java-Anwendung eine große CSV Datei die der Anwender dann anschliessend in Excel öffnet/importiert.
Eine Spalte enthält allerdings Telefonnummern - unter anderem auch im Format +49-843-21-11111
Da eine CSV Datei keine Formatierungen kennt versucht Excel die Spalte im Standard-Format anzuzeigen. Für Excel ist aber ein Wert der mit einerm + oder - anfängt eine Formel. Was passiert also? Excel errechnet einen Wert -11926 daraus.
Damit die Spalte als Text angezeigt wird gibt es ja ein paar Möglichkeiten, z. B. die Werte im Format ="+49-843-21-11111" auszugeben. Oder auch mit einem vorangestellten einfachen Hochkommata, z. B. '+49-843-21-11111

Die Variante mit den doppelten Anführungszeichen scheidet bei mir aus, da doppelte Anführungszeichen von meiner Ausgabelibrary escaped werden (sprich es wird im Klartext daraus dann =\"+49-843-21-11111\" - was es dann im Excel wiederum falsch anzeigt). Die Möglichkeit mit dem einfachen Hochkommata funktioniert beinahe - allerdings zeigt Excel beim Öffnen der Datei die Werte erst mal so an: '+49-843-21-11111
Nur wenn man die Zelle dann bearbeitet und einfach gleich wieder ohne Änderung verlässt wird das ' nicht mehr in der Spalte angezeigt (im Feld selber ist das Zeichen trotzdem noch vorhanden, was aber nicht das Problem wäre).

Gibt es also eine Lösung für das genannte Problem? Also entweder sofortige Anzeige ohne ' - oder eben eine andere Variante mit Escape-Zeichen?

Grüße,
rednix

ransi
13.03.2009, 13:54
HAllo RedNix

Versuch doch mal beim Erstellen deiner .csv das – anstatt -.
chr(150) statt chr(45)
Damit könntest du Excel überlisten.

ransi

rednix
13.03.2009, 15:08
Hi,

danke für deine Antwort.
Allerdings ist der vorgeschlagene Trick leider auch keine Option für mich. Denn die Telefonnummer sollte schon noch Standard-konform sein (siehe auch http://de.wikipedia.org/wiki/Rufnummer#Schreibweisen).
Ein Gedankenstrich als Trennzeichen statt einem Bindestrich ist es dann aber nicht mehr (ok - streng genommen ist es mit einem ' vor dem Text auch nicht mehr). Ich hatte schon versucht ein Leerzeichen vor oder nach dem Text anzufügen, was aber Excel leider beim Import wohl immer entfernt.
Und vielleicht auch noch vorweg: der Import-Assistent ist auch keine Option, da die Benutzer die Datei direkt öffnen können sollen ohne diesen Import-Dialog.
Ich suche eigentlich noch immer nach einem "Sonderzeichen" das Excel dazu veranlasst direkt den Wert als Text zu interpretieren (wie gesagt - der ' funktioniert nur wenn man in jeder Zelle kurz den Edit-Modus hatte).

Grüße,
rednix

ransi
13.03.2009, 15:20
HAllo Rednix

Ich suche eigentlich noch immer nach einem "Sonderzeichen" das Excel dazu veranlasst direkt den Wert als Text zu interpretieren...
Es gibt viele Threads die fragen genau andersherum.

Sinngemäß:
"Beim csv-Import habe ich so ein komisches Leerzeichen vor den Werten.
Darum erkennt Excel meine Zahlen nicht als Zahlen..."

evtl. hilft genaudas dir hier weiter.

Chr(160) & "+49-843-21-11111"

???
ransi

rednix
13.03.2009, 16:51
Klasse - danke für den zweiten Tipp!

Das char(160) geht in Ordnung - das zeigt Excel als Leerzeichen an und schmeisst es nicht weg wie ein normales Space-Zeichen. Die Telefonnummer an sich bleibt somit 1:1 erhalten und auch sortier- und durchsuchbar!
Hatte auch noch versucht das Zeichen hinten anzuhängen - dargestellt wird die Zelle dann auch sofort als Text; allerdings kommt dann ein Fehler sobald man den Wert bearbeitet. Insofern belasse ich das "Leerzeichen" vorne - ist dann nur ein kleiner Schönheitsfehler ;)

Thx!!