在您告訴我進行更多搜尋並查看其他人的問題及其答案之前,請先閱讀我的確切問題。
這裡的大多數其他主題涉及如何使 UTF-8 成為文字匯入精靈中的預設選項。但是,我想完全避免使用文字導入精靈。
我有 CSV 文件,想透過雙擊開啟。 Excel 會自動開啟它們,但即使我執行了使用 65001 (UTF-8) 作為預設編碼的 regedit 技巧,檔案仍然無法正確顯示。
有沒有什麼方法可以強制這種編碼開幕文件的而不是必須進口它?
先致謝
(使用美國英語的 Excel 2016,我的 Windows 7 區域配置設定為西班牙語(美國),我不知道這是否重要,但它實際上是為了處理預設逗號作為分隔符號)
編輯澄清:在執行強制 utf-8 匯入的 regedit 技巧後開啟 CSV 檔案時,其他語言的重音符號和字元仍然顯示為奇怪的程式碼。不過,我沒有導入(該技巧按預期工作);我直接打開文件。
答案1
您可以使用 PowerShell 腳本開啟 CSV 檔案並將其自動傳遞到 Excel。該腳本默默地使用 Excel 的文本導入方法,該方法處理 UTF-8 編碼,並且作為獎勵始終將值視為文本
將此腳本的快捷方式新增至您的發給Right click » SendTo » myScript
資料夾,以便您可以透過(簡單方法)開啟所有 CSV 文件
(或)
您可以使用執行程式將腳本轉換為可執行檔 (.exe)。現在您可以右鍵單擊 .csv 檔案並在“打開用' 您選擇此 .exe 作為開啟 CSV 檔案的預設程式(進階方法)
它能做什麼
- UTF-8字元正確顯示
- 可以開啟多個 CSV 檔案。將每個 CSV 內容儲存為同一工作簿中的新工作表
所有值都被視為純文字。 Excel 內建的 CSV 處理程序並沒有解釋
- IE。
0001
保留0001
且不轉換為1
- IE。
-A122:23
或=AZ1+32
不被解釋為公式並保持原樣
- IE。
如何使用
- 建立一個新的文字檔案並貼上以下腳本。可以找到有評論的版本這裡
$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()
}
}
- 將其保存在類似的地方
C:\Tools\myScript.ps1
。 (注意擴展名.ps1
) - WinR透過»
shell:sendto
» 開啟您的 sendto 資料夾Enter - 透過右鍵點選»新»捷徑建立新捷徑並貼上此行。不要忘記將路徑更改為您自己放置腳本的路徑
“%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe” -NoProfile -NonInteractive -WindowStyle 隱藏 -File“C:\我的\資料夾\myScript.ps1”
比較
- 新方式:透過腳本開啟(透過sendto或PS2EXE轉換的可執行檔)
- 老方式:雙擊打開
評論
PS2EXE 無法在 Windows 10 上執行,因為 PS2EXE 不支援 .NET 版本 4.5 或更高版本。該程式適用於帶有 .NET 4.0 的 Windows 7
在我的第一次測試中,Excel 在嘗試顯示中文 UTF-8 字元時確實顯示出亂碼。然而,在我的測試過程中,這種行為發生了變化,現在兩種方法都能正確處理 UTF-8。我不知道是什麼原因造成的