Sie können ein PowerShell-Skript verwenden, um CSV-Dateien zu öffnen und automatisch an Excel zu übergeben. Das Skript verwendet im Hintergrund die Textimportmethode von Excel, die die UTF-8-Codierung behandelt und als Bonus Werte immer als Text behandelt
Fügen Sie eine Verknüpfung zu diesem Skript in Ihren sendto- Ordner ein, damit Sie alle CSV-Dateien über die Right click » SendTo » myScript
(einfache Methode) öffnen können.
(oder)
Sie können PS2EXE verwenden, um Ihr Skript in eine ausführbare Datei (.exe) zu konvertieren. Jetzt können Sie mit der rechten Maustaste auf eine CSV-Datei klicken und unter " Öffnen mit " diese EXE-Datei als Standardprogramm zum Öffnen von CSV-Dateien auswählen (erweiterte Methode).
Was es macht
- UTF-8-Zeichen werden korrekt angezeigt
- Kann mehrere CSV-Dateien öffnen. Speichert jeden CSV-Inhalt als neues Arbeitsblatt in derselben Arbeitsmappe
Alle Werte werden als reiner Text behandelt. Keine Interpretation des Excel-Buildin-CSV-Handlers
- dh.
0001
bleibt0001
und wird nicht in konvertiert1
- dh.
-A122:23
oder=AZ1+32
werden nicht als Formel interpretiert und bleiben so wie sie sind
- dh.
Wie benutzt man
- Erstellen Sie eine neue Textdatei und fügen Sie das folgende Skript ein. Eine kommentierte Version finden Sie hier
$CSVs = @() $args.ForEach({ If ((Test-Path $_) -and ($_ -Match ".csv$|.txt$")) { $CSVs += ,$_ } }) if (-Not $null -eq $CSVs) { $excel = New-Object -ComObject excel.application $excel.visible = $true $excel.SheetsInNewWorkbook = $CSVs.Count $workbook = $excel.Workbooks.Add() for ($i=0; $i -lt $CSVs.Count; $i++){ $csv = Get-Item $CSVs[$i] $worksheet = $workbook.worksheets.Item($i + 1) $worksheet.Name = $csv.basename $TxtConnector = ("TEXT;" + $csv.fullname) $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1")) $query = $worksheet.QueryTables.item($Connector.name) $query.TextFilePlatform = 65001 $query.TextFileTextQualifier = 1 $query.TextFileOtherDelimiter = $Excel.Application.International(5) $query.TextFileParseType = 1 $arrFormats = ,2 * $worksheet.Cells.Columns.Count $query.TextFileColumnDataTypes = $arrFormats $query.AdjustColumnWidth = 1 $query.Refresh() $query.Delete() } }
- Speichern Sie es irgendwo
C:\Tools\myScript.ps1
. (Beachten Sie die Erweiterung.ps1
) - Öffnen Sie Ihren sendto-Ordner über WinR»
shell:sendto
» Enter - Erstellen Sie eine neue Verknüpfung mit Rechtsklick »Neu» Verknüpfung und fügen Sie diese Zeile ein. Vergessen Sie nicht, den Pfad zu Ihrem eigenen Pfad zu ändern, in den Sie Ihr Skript gestellt haben
"% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe" -NoProfile -NonInteractive -WindowStyle Hidden-Datei "C: \ mein \ Ordner \ myScript.ps1"
Vergleich
- Neuer Weg: Über Skript geöffnet (entweder über sendto oder PS2EXE-konvertierte ausführbare Datei)
- Alte Art: Über Doppelklick geöffnet
Bemerkungen
PS2EXE wird nicht unter Windows 10 ausgeführt, da .NET Version 4.5 oder höher von PS2EXE nicht unterstützt wird. Das Programm arbeitet unter Windows 7 mit .NET 4.0
In meinen ersten Tests zeigte Excel bei dem Versuch, chinesische UTF-8-Zeichen anzuzeigen, Kauderwelsch. Während meines Tests hat sich dieses Verhalten jedoch geändert, und beide Methoden behandeln UTF-8 nun korrekt. Ich habe keine Ahnung, was das verursacht hat