![]() |
Textkennzeichnung csv Datei für Excel
Hallo zusammen.
das ganze hat nun nichts mit Delphi zu tun. Excel hat diese "clevere" automatische Importfunktion von Dateien die mit .csv enden. Problem sind dabei Postleitzahlen und Telefonnummern die mit 0 beginnen. Excel erkennt das ganze als Text und wirft die 0 raus. Das ganze kann man umgehen mit ="0123456" in der Zelle. Zwar liest man häufig mit "0123456" aber das gilt nur für den Importassistenten. Für den Autoimport bei .csv braucht man scheinbar das ="" . Wurde die Datei dann geöffnet und man speichert sind die Markierungen wieder weg und beim erneuten Öffnen hat man wieder das Problem von ganz oben. Ich frage mich da wirklich was derjenige gesoffen hat der das programmiert hat. Ich kenne mich leider nicht wirklich gut mit Excel aus. Kennt jemand einen Magic Trick womit man das lösen kann? Weil der Output muss .csv sein und der Kunde will die Datei in Excel öffnen, nachbearbeiten und auch wieder in .csv speichern. Und daher brauche ich das ="". Wenn der Kunde aber die Datei nicht bearbeitet, dann hat die nächste Stelle das ="" drin und jammert. |
AW: Textkennzeichnung csv Datei für Excel
Man kann Text in Excel auch mit einem führendem Hochkomma markieren: '123
Hilft das vielleicht? Edit: gerade getestet, beim Speichern schmeisst Excel das Hochkomma auch wieder raus. |
AW: Textkennzeichnung csv Datei für Excel
Wie sieht es denn mit dem Hochkomata aus?
Also statt ="03" einfach '03 in eine Zelle schreiben, dann weiß Excel, dass es ein String sein soll. Keine Ahnung, ob das den Ex-/Import überlebt. Meines Wissens kann es auch schon mal einen Unterschied machen, ob man auf eine csv-Datei klickt und diese dann mit Excel als Standardprogramm geöffnet wird oder ob man in Excel über "Datei öffnen" eine csv-Datei auswählt und dann erstmal der Import-Assistent startet. Edit, hier eine Anleitung mit ein paar Bildern, genau zu dem Problem, wo der Import-Assistent benutz wird: ![]() |
AW: Textkennzeichnung csv Datei für Excel
Delphi-Quellcode:
bedeutet, dass das als "Formel" ausgewertet wird.
=xxx
Beim Speichern (CSV-Export) wird aber der Feldinhalt und nicht die Formel gespeichert. Es gäbe da noch den Trick mit einer Hilfsspalte
Delphi-Quellcode:
(A1,B1,C1)
0123456,=TEXT(A1;"000000"),456789
ODER man nimmt eben nicht den Auto-Import, sondern sagt "manuell" beim Import, dass diese Spalte ein TEXT und keine ZAHL ist. |
AW: Textkennzeichnung csv Datei für Excel
Wobei wir (bei expliziter Definition als "Text") das dann wieder mit Delphi erschlagen könnten:
// Datei als Stringliste einlesen ... // Excel als OLE-Objekt erzeugen vWorkSheet : OLEVariant; ... // Range als "Text" festlegen vWorkSheet.Range[Von:Bis].NumberFormat := '@'; ... // Schleife durch Liste, zellenweise eintragen vWorkSheet.Cells(Reihe, Spalte) := '012345'; |
AW: Textkennzeichnung csv Datei für Excel
der Import-Assistent steht leider nicht zur Diskussion. Den möchte unser Kunde nicht benutzen, verständlicherweise, weil er zu aufwendig ist und auch Spielraum für Fehler lässt.
' oder " funktioniert nur beim manuellen Import. Das kann man auf Seite 2 vom Assistenten auswählen. Wenn man z.b eine Datei erstellt und folgendes reinschreibt und als .csv speichert
Code:
dann kommt folgendes in Excel raus
"0123456";'0123456';="0123456"
Code:
Direkt in Excel kann ich es auch nicht öffnen, weil die .csv Datei per Email(Mapi) versendet wird.
0123456 | '0123456' | 0123456
|
AW: Textkennzeichnung csv Datei für Excel
Zitat:
|
AW: Textkennzeichnung csv Datei für Excel
Zitat:
Und die Verwendung von ;="123" ist doch sehr Excel-spezifisch. ggf. hilft es eine Spalte mit "Text" vor zu belegen? vgl. #4 Gruß K-H |
AW: Textkennzeichnung csv Datei für Excel
Zitat:
Alles nicht schön. Ich glaube nicht, dass du die .csv Datei so schreiben kannst, dass Excel sie pauschal richtig öffnet und das eventuelle andere Programme sie auch richtig öffnen. Wenn du im Netz suchst wird du massige Stellen finden, die auch dieses Problem beschreiben und wo letztlich keine schöne Lösung aus dem Hut gezaubert wird, sondern nur die bereits genannten "Workarrounds". |
AW: Textkennzeichnung csv Datei für Excel
ot
keine Lösung: Sag dem Kunden, dass es nicht geht. Wenn ich ein Auto kaufe, kann ich mit damit auch nicht in die Kurve legen, als sei es ein Motorrad. Auch nicht, wenn ich mit dem Fuß aufstampfe und dem Verkäufer sage, ich will aber, dass das geht. /ot |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz