Bevor Sie mir sagen, ich solle weiter suchen und mir die Fragen und Antworten anderer Leute ansehen, lesen Sie meine genaue Frage.
Die meisten anderen Themen hier befassen sich damit, wie man UTF-8 zur Standardoption im Textimport-Assistenten macht. Ich möchte jedoch vermeiden, den Textimport-Assistenten überhaupt verwenden zu müssen.
Ich habe CSV-Dateien, die ich per Doppelklick öffnen möchte. Excel öffnet sie zwar automatisch, aber selbst wenn ich den Regedit-Trick anwende und 65001 (UTF-8) als Standardkodierung verwende, werden die Dateien trotzdem nicht richtig angezeigt.
Gibt es eine Möglichkeit, diese Kodierung zu erzwingen in derÖffnungeiner Datei, stattimportierenEs?
Dank im Voraus
(Ich verwende Excel 2016 in US-Englisch und meine regionale Windows 7-Konfiguration ist auf Spanisch (USA) eingestellt. Ich weiß nicht, ob das wichtig ist, aber es ging eigentlich darum, die Standardkommas als Trennzeichen zu verwenden.)
EDIT zur Klarstellung: Akzente und Zeichen aus anderen Sprachen erscheinen immer noch als seltsame Codes, wenn ich eine CSV-Datei öffne, nachdem ich den Regedit-Trick angewendet habe, um UTF-8 für den Import zu erzwingen. Ich importiere jedoch nicht (der Trick funktioniert dort wie erwartet); ich öffne die Datei direkt.
Antwort1
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-Kodierung verarbeitet und als Bonus Werte immer als Text behandelt.
Legen Sie eine Verknüpfung zu diesem Skript in Ihremsenden anOrdner, sodass Sie alle CSV-Dateien öffnen können über Right click » SendTo » myScript
(einfache Methode)
(oder)
Sie könnenPS2EXEum 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' Sie wählen diese .exe als Standardprogramm zum Öffnen von CSV-Dateien (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 durch den in Excel integrierten CSV-Handler
- d. h.
0001
bleibt0001
und wird nicht umgewandelt in1
- d. h.
-A122:23
oder=AZ1+32
werden nicht als Formel interpretiert und bleiben wie sie sind
- d. h.
Wie benutzt man
- Erstellen Sie eine neue Textdatei und fügen Sie das folgende Skript ein. Eine kommentierte Version finden SieHier
$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 an einem beliebigen Ort wie
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 über Rechtsklick » Neu » Verknüpfung und fügen Sie diese Zeile ein. Vergessen Sie nicht, den Pfad in den Pfad zu ändern, in dem Sie Ihr Skript abgelegt haben.
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe " -NoProfile -NonInteractive -WindowStyle Hidden -File„C:\mein\Ordner\myScript.ps1“
Vergleich
- Neuer Weg: Per Skript geöffnet (entweder über sendto oder eine in PS2EXE konvertierte ausführbare Datei)
- Alter Weg: Öffnen per Doppelklick
Bemerkungen
PS2EXE läuft nicht unter Windows 10, da die .NET-Version 4.5 oder höher von PS2EXE nicht unterstützt wird. Das Programm läuft unter Windows 7 mit .NET 4.0
In meinen ersten Tests zeigte Excel beim Versuch, chinesische UTF-8-Zeichen anzuzeigen, Kauderwelsch. Während meiner Tests änderte sich dieses Verhalten jedoch und nun verarbeiten beide Methoden UTF-8 korrekt. Ich habe keine Ahnung, was dies verursacht hat.