Microsoft Excel UTF-8 編碼,無需匯入

Microsoft Excel UTF-8 編碼,無需匯入

在您告訴我進行更多搜尋並查看其他人的問題及其答案之前,請先閱讀我的確切問題。

這裡的大多數其他主題涉及如何使 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不被解釋為公式並保持原樣

如何使用

  • 建立一個新的文字檔案並貼上以下腳本。可以找到有評論的版本這裡
$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。我不知道是什麼原因造成的

相關內容