codehunter
Goto Top

CSV mit Excel 2021 aus Explorer öffnen

Hallo zusammen,

ich habe ein ganz triviales Problem und komme irgendwie nicht weiter. Wir arbeiten oft mit CSV-Dateien und die sind standardmäßig mit Excel verknüpft wenn MS Office installiert ist bzw. mit Libre Calc wenn Libre Office installiert ist.

Libre Office steigt dann direkt in den CSV-Import-Assistenten ein wenn man eine CSV im Explorer doppelklickt und dort kann man dann angeben, welche Trennzeichen usw. Soweit alles fein. MS Excel hat in älteren Versionen sowas auch gemacht aber irgendwann (fragt mich nicht ab welcher Version) ging das nicht mehr. Stattdessen wurde die CSV wie ein Textfile geöffnet und angezeigt. Optisch unterscheidet sich das dann nicht von dem was ein Notepad oder Wordpad anzeigen würde.

Bekommt man MS Excel dazu, beim Öffnen von CSV-Files automatisch in den CSV-Assistenten einzusteigen, so wie das Libre Calc auch macht? Es ist nämlich arg umständlich, erst Excel zu öffnen, dann in den Reiter Daten -> Daten abrufen -> Aus Datei -> Aus Text/CSV. Das kann man machen wenn man es einmal im Monat tut. Aber mehrmals pro Stunde nervt das schon ziemlich.

Danke und Grüße!

Content-ID: 11074076811

Url: https://administrator.de/contentid/11074076811

Ausgedruckt am: 03.12.2024 um 17:12 Uhr

TK1987
TK1987 29.02.2024 aktualisiert um 14:25:03 Uhr
Goto Top
Moin,

Excel öffnet CSV-Dateien nur dann richtig, wenn diese Semikolons als Trennzeichen haben. In dem Fall wird die CSV dann aber gleich mit richtigen Spalten geöffnet, komplett ohne Importassistent.

Bei anderen Trennzeichen müsste man, wie du schon beschrieben hast über die Funktion Aus Text/CSV importieren gehen, oder die CSV-Datei öffnen und dann über den Reiter "Daten -> Datentools -> Text in Spalten" gehen.

Gruß Thomas
kpunkt
kpunkt 29.02.2024 um 14:41:36 Uhr
Goto Top
Also Excel erkennt ein Nichtstandardtrennzeichen dann, wenn es in der ersten Zeile der CSV mitgegeben wird.
hat man z.B. die Datei mit dem Inhalt
1#2#3#
01#002#23.02.2023
Dann öffnet Excel die auch als Textdatei.
Fügt man in der ersten Zeile ein
sep=#
hinzu, dann kennt Excel das Trennzeichen und zeigt die Daten dann tabelarisch an.

Man könnte da mit Powershell in die farglichen Dateien die erste Zeile einfügen.
Codehunter
Codehunter 29.02.2024 um 15:35:44 Uhr
Goto Top
Die Art der Trennzeichen haben wir leider nicht in der Hand, da gibt es IMHO auch keinen echten Standard. Die Dateien kommen aus externen Systemen und sind auch nicht einheitlich. Meist sind es Kommas, seltener Semikolons und manchmal sogar Tabulatoren.

Stur von Semikolons auszugehen ist irgendwie wieder typisch Microsoft. Die Option mit der "Steueranweisung" in der ersten CSV-Zeile ist zwar interessant, aber für uns auch keine Option. Denn dann müsste man nach dem Bearbeiten nochmal in ein zweites Programm (Texteditor) und die Zeile wieder entfernen. Sonst ließen sich die Dateien extern wieder nicht einlesen.

Diejenigen bei uns die das häufiger machen, sind deswegen schon auf Libre Office umgestiegen weil es so völlig unpraktikabel ist. Andere dachten, kann ja nicht angehen dass Excel das nicht kann und darum hab ich jetzt mal hier gefragt. Wow ich hätte nicht gedacht dass es da wirklich keine "gute" Lösung bei einem modernen Excel gibt. Das frustrierende dabei ist, dass Excel das schon mal viel besser konnte als es bei den aktuellen Versionen ist. Als Altgedienter erinnere ich mich noch an Excel 2003, da war das noch sehr elegant gelöst.
TK1987
TK1987 29.02.2024 aktualisiert um 15:53:33 Uhr
Goto Top
Zitat von @Codehunter:
Meist sind es Kommas, seltener Semikolons und manchmal sogar Tabulatoren.
Bei Tabulatoren gäbe es noch die Möglichkeit, die Datei einfach mit einem Texteditor zu öffnen, alles zu markieren und dann per Copy&Paste in Excel einzufügen - denn beim Einfügen aus der Zwischenablage wird bei Excel auch nach Tabulatoren getrennt.

Die Option mit der "Steueranweisung" in der ersten CSV-Zeile ist zwar interessant, aber für uns auch keine Option. Denn dann müsste man nach dem Bearbeiten nochmal in ein zweites Programm (Texteditor) und die Zeile wieder entfernen. Sonst ließen sich die Dateien extern wieder nicht einlesen.
Man könnte die Dateien natürlich auch per Powershell mit Import-Csv einlesen und dann mit Export-Csv Semikolon-getrennt ausgeben. Allerdings müsste man da auch im Vorfeld wissen, welche Trennzeichen in den Quelldateien vorhanden sind.
Codehunter
Codehunter 29.02.2024 um 16:57:49 Uhr
Goto Top
Zitat von @TK1987:

Man könnte die Dateien natürlich auch per Powershell mit Import-Csv einlesen und dann mit Export-Csv Semikolon-getrennt ausgeben. Allerdings müsste man da auch im Vorfeld wissen, welche Trennzeichen in den Quelldateien vorhanden sind.

Da beißt sich dann die Katz in den Schwanz. Wissen wir nicht blind, müsste man nachschauen. Also wieder ein Arbeitsschritt mehr. Beim CSV-Assistenten wählt man das Trennzeichen einfach danach aus, dass die Vorschau "gut" aussieht und fertig.

Versteh mich bitte nicht falsch. Es erscheint mir so absurd, dass Excel das schon mal konnte und nun nicht mehr kann. Völlig overengineered irgendwie angesichts des "offiziellen" Weges über den Reiter Daten. Ich erwarte ja nicht mal dass es automatisch erkennt, welches Trennzeichen richtig ist. Der CSV-Assistent wäre völlig ausreichend. Ich mags fast nicht glauben dass es da wirklich keinen Registry-Schalter oder Befehlszeilenoption geben soll, die Excel veranlasst, eine CSV-Datei direkt in den CSV-Assistenten zu öffnen. Wenn das wirklich so ist, dann wäre das in diesem Fall ein KO-Kriterium für dein Einsatz von Excel und Libre Calc würde Pflicht. Echt, ich bin baff :-O
kpunkt
kpunkt 01.03.2024 um 07:19:51 Uhr
Goto Top
Naja, es ist ja bereits hinlänglich bekannt, dass Excel so zeimlich alles kann, nur nicht mit Tabellen und Daten umgehen.
Das Glas ist weder 1/2 voll oder 1/2 leer. Das Glas ist 01.02.1900

Theoretisch könnte es irgendwie klappen, dass man sich mit VBA ein Template klöppelt, das dann den Import-Assistent startet. Aber ich denke nicht, dass das zielführend wird.
Einfacher wirds wohl wenn man für .csv Calc als Standardanwendung definiert.
Codehunter
Codehunter 01.03.2024 um 07:55:45 Uhr
Goto Top
Feature-Request @microsoft: Wenn man ein CSV mit Excel öffnen will, ein Hinweisfenster mit der Meldung anzeigen: "Die Aufgabe ist zu simpel. Verwenden Sie dafür bitte Libre Office."

Spaß beiseite. Ich selbst verwende MS Office zu selten als dass mir das aufgefallen wäre. Deswegen kann ich auch nicht sagen, ab welcher Version das CSV-Handling so verschlechtert ist. Ich selbst nutze schon ewig Open bzw. später Libre Office. Aber ich rede nicht jedem sein MS Office aus wenn man mich was fragt. Nur in diesem Fall tipp ich mir wirklich an die Birne, was sich Microsoft dabei gedacht hat.

Ich danke euch für eure Vorschläge. Nur leider ist die Aufgabe anscheinend mit den gegebenen Mitteln nicht einfacher lösbar sondern nur komplizierter oder fehleranfälliger. Denn der Einsatz von externen Texteditoren etc. hat schon ein paar Mal zu Fehlern geführt. Das zu vermeiden ist anscheinend nur mit Libre Office möglich.
goscho
goscho 01.03.2024 um 11:42:36 Uhr
Goto Top
Moin Leute,
mir ist das auch schon häufiger untergekommen, dass Excel CSV-Dateien nur importiert, wenn man zuerst eine leere Datei erstellt und anschließend den Importassistenten startet.

Ich habe das heute früh mal zum Anlass genommen, um mittels ChatGPT Wege zu finden, das zu korrigieren.
Habe ich fast 2 Stunden mit verbracht.

ChatGPT hat mir folgende Wege vorgeschlagen:

  • Anpassen der Einstellungen in Excel -> leider gibt es diesen Punkt in Excel 2019 nicht (habe Office 2019 Pro Plus installiert), eventuell ja in Excel 2021 (konnte ich noch nicht testen) face-sad

  • Anpassen der Registry, damit csv-Dateien immer mit dem Import-Assistenten von Excel gestartet werden -> habe ich versucht, leider erfolglos face-sad

  • Erstellen einer OpenCSVWithExcel.bat" in welcher der Pfad zu Excel /a hinterlegt ist und welche dann Excel ohne Addins startet, was angeblich den Import Assistenten starten soll. Diese .bat dann als Standard-Programm für csv-Dateien angeben-> hat nicht funktioniert face-sad

  • Ein Python Script erstellen, welches das angeblich passende beinhaltet und den kompletten Pfad nach CSV-Dateien abgrast, damit diese dann von Excel mit dem Assistenten geöffnet werden. Dazu habe ich extra Python und Visual Studio Code installiert (Ich habe von Programmierung so rein gar keine Ahnung.) -> Was soll ich sagen: Es versucht Excel zu starten, jedoch startet nicht Excel, sondern der Aktualisierungsbildschirm von Microsoft Office (OfficeC2rclient.exe), der nach kurzer Zeit verschwindet und nichts passiert. face-sad

  • Dann schlug die KI vor, diese dateien mit MS Access zu öffnen.... face-sad

Ich habe jetzt erst mal aufgegeben und gebe ChatGPT übers Wochenende Zeit, sich zu sammeln und versuche es vielleicht kommende Woche nochmals.
TK1987
TK1987 01.03.2024 aktualisiert um 12:26:48 Uhr
Goto Top
Moin,

Zitat von @goscho:
  • Anpassen der Einstellungen in Excel -> leider gibt es diesen Punkt in Excel 2019 nicht (habe Office 2019 Pro Plus installiert), eventuell ja in Excel 2021 (konnte ich noch nicht testen) face-sad
von welchen Einstellungen wurde da gesprochen? Könnte das ja mal in 365 testen.

* Erstellen einer OpenCSVWithExcel.bat" in welcher der Pfad zu Excel /a hinterlegt ist und welche dann Excel ohne Addins startet, was angeblich den Import Assistenten starten soll.
Naja, also fast... laut Doku wird bei /a die ProgID eines Add-Ins als Argument erwartet und Excel läd dann das Add-In mit dieser ProgID 🤣

Alles in allem ist Excel für die Verarbeitung von Maschinendaten definitiv keine gute Wahl.
Selbst wenn man Semikolon-getrennte CSV-Dateien hat - statt die Daten einfach anzuzeigen wie sie sind (was bei CSV definitiv immer die beste Option wäre), versucht Excel immer die Spalten zu interpretieren.
Wie @kpunkt schon sagte...
Das Glas ist weder 1/2 voll oder 1/2 leer. Das Glas ist 01.02.1900
Den muss ich mir merken.

Oder in der deutschen Sprachfassung von Excel mit CSV-Daten arbeiten, welche Dezimalpunkte statt Kommas verwenden? - ganz böse!

Calc ist für CSV definitiv die bessere Wahl.

Gruß Thomas
11078840001
11078840001 01.03.2024 aktualisiert um 13:07:03 Uhr
Goto Top
CSV-Erweiterung statt auf Excel auf ein Powershell-Skript leiten was Excel mit der CSV und entsprechenden Parametern öffnet.
param([parameter(mandatory=$true)][string]$path)
$n = [System.Reflection.Missing]::Value
if([io.Path]::GetExtension($path) -ne '.csv'){  
    throw "Nur CSV-Dateien unterstützt!"  
    return
}
$delimiter = Read-Host "CSV Trennzeichen eingeben"  
$excel = New-Object -Com Excel.Application -Property @{Visible=$true}
[void]$excel.Workbooks.OpenText($path,$n,$n,1,$n,$n,$false,$false,$false,$false,$true,$delimiter)

Dateierweiterung *.csv in der Registry oder mit Extman dann auf das Skript mit folgender Befehlszeile umleiten
powershell -EP Bypass -File "C:\pfad_zum_script.ps1" %1  
TK1987
TK1987 01.03.2024 aktualisiert um 13:03:29 Uhr
Goto Top
Moin,

Zitat von @11078840001:
$delimiter = [regex]::match((Get-Content $path -Raw),'^("[^"]*"|[^,;\t\|]+)\s*([,;\t\|])').Groups[2].Value  
sowas ist imho immer murks.

Wenn man z.B. sowas hat:
Nachname, Vorname;Straße;Tel. Nr.
würde da als Delimiter Komma statt Semikolon kommen. Selbiges, wenn man z.B. Daten ohne Spaltenüberschriften und mit Dezimalkommas hat.

Dafür ist CSV einfach zu vage definiert, als das man die Trennzeichen wirklich zuverlässig per Skript erkennen könnte. Importassisstent wie bei Calc ist da definitiv die beste Option.

Gruß Thomas
11078840001
11078840001 01.03.2024 aktualisiert um 13:11:57 Uhr
Goto Top
Dann setzt man halt einfach eine Read-Host Anweisung für die Parameter schon hat der User wieder die Kontrolle, er muss das Zeichen dann halt aber vorher kennen ...
$delimiter = Read-Host "CSV Trennzeichen eingeben"  
War ja auch nur eine Idee/Workaround für Excel, das es bessere Alternativen für CSV gibt steht außer Frage.
TK1987
TK1987 01.03.2024 um 13:11:47 Uhr
Goto Top
Zitat von @11078840001:
Dann setzt man halt einfach eine Read-Host Anweisung an die Stelle face-smile.
Das geht natürlich und wäre eine bessere Option, allerdings bleiben die restlichen Nachteile/Probleme von Excel bei der Verarbeitung von CSV-Daten dennoch bestehen.

Bei richtigen Tabellen würde ich natürlich immer Excel bevorzugen - aber für CSV ist und bleibt Calc die beste Wahl.