Frage von karlschnitmann, 92

Excell Datei in kommagetrennten CSV Datei umwandeln. Dabei müssen Textfelder in Anführungszeichen stehen?

Hallo Zusammen Ich habe Daten in einer Excel Tabelle. Für ein Import in einer Datenbank brauche ich jedoch eine CSV Datei (UTF-8 kodiert). Das an sich ist nicht das Problem ich kann es im CSV abspeichern und mit Notepad in utf8 umwandeln. Das Problem ist aber das ich dann die Daten in der Form habe:

person_id;person_last_name;person_first_name;person_address;person_zip_code;person_city;person_phone_mobile;person_email;person_code;
10;Reich;Frank;Beispielstrasse 7;8493;;078 888 88 88;frank.reich@gmx.ch;m4i1;

Ich bräuchte sie aber in dieser Form:

    "person_id","person_last_name","person_first_name","person_address","person_zip_code","person_phone_mobile","person_email","person_code",
10,"Reich","Frank","Beispielstrass 7",8493,,"078 888 88 88","frank.reich@gmx.ch","m4i1",

Das heisst, die Spalten komagetrennt und Strings in Anführungszeichen. Gibt es da eine Möglichkeit wie ich es abspeichern kann damit es stimmt oder muss ich mit regEx alles ersetzen? Ich bin dankbar für jeden tipp. Lg Karl

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Iamiam, Community-Experte für Excel, 37

warum ist jetzt meine AW verschluckt worden? Nochmal kurz:

Das µ geht auch kürzer, wenn Deine xl-Datei verändert werden darf. Bleibt allerdings xl-intern, also noch ohne als CSV speichern.

Setze, wenn Textformeln drin sind, diese zu Werten um. Ggf werden Datumsformeln, die zB November als Komponente ausgelagert haben, durch die " falsch, sehr selten)

Ersetze dann evtl vorhandene " durch ein seltenes Zeichen, zB Ï (äusserst selten!) (Begründung im Link von f5f5f5). Dann:

Alt+F11, im Editor-Menü Einfügen, Modul. Dahinein kopierst Du folgendes Makro:

  • Sub AnfZ_umTextSetzen() '(verändert_aber_xl_Datei!)
  • Dim C
  • For Each C In Selection.SpecialCells(xlCellTypeConstants) '2=xlTextValues)
  • If Not IsNumeric(C) And Not IsDate(C) Then C.Value = """" & """" & C.Value & """"  'davor zweimal ", weil das erste als rechtsbündig gelesen wird
  • Next C 'die Logik von """" hatte ich schon mal kapiert und wieder vergessen
  • End Sub

Das µ dauert ziemlich lang, aber das evtl kürzere .Specialcells(xlTextvalues) oder auch xlcelltypeTextvalues oder 2 tut bei mir nicht, komm hier mit der Hilfe nicht klar. Weiß aber auch nicht, wie lange das im anderen Link dauert.

Antwort
von f5f5f5, 56

Also meine Internet "Recherche" hat mich auf diesen Link hier gebracht

http://www.pctipp.ch/tipps-tricks/kummerkasten/office/artikel/excel-2010-csv-exp...

Dachte aber auch, dass das Excel Out-Of-The-Box kann, aber wohl doch nicht. Lasse mich gerne eines besseren Belehren. Viel Erfolg.

Expertenantwort
von schmiddi1967, Community-Experte für Excel, 42

Ist deine Frage für dich zu 100% beantwortet?

Kommentar von karlschnitmann ,

Da ich diesen Import öfters machen werde, hatte ich gehofft
das es eine simplere Methode gibt, falls du also noch ein anderen Ansatz hast wäre
ich dir dankbar

Kommentar von schmiddi1967 ,

Naja, zum Thema Anführungszeichen hat f5f5f5 ja schon was geschrieben, wenn du dir diesen Code in eine PERSONAL.XLSB ablegst hast du ihn doch immer für dich bereit.

Nur ich denke das das Thema ; und , noch im Raum steht oder, denn ich weiß nicht ob deine Datenbank es akzeptiert wenn du bei der dadurch erstellten CSV im Editor die ; durch , ersetzt.

Das müsste man noch wissen, wenn nicht musst du mit der Sprache spielen. Das erkläre ich dir dann wenn du mir genau sagst was deine DB macht wenn du 1. jetzt mit dem von f5f5f5 geposteten Makro die Anführungszeichen einfügst (PERSONAL.XLSB kann ich dir gerne auch erklären, dann brauchst du das Makro nicht immer wieder eifügen) und im Editor die ; durch , ersetzt.

Stopt die DB wegen fehler und wenn ja welcher Fehler kommt?

Keine passende Antwort gefunden?

Fragen Sie die Community