无需导入 Microsoft Excel UTF-8 编码

无需导入 Microsoft Excel UTF-8 编码

在您告诉我进行更多搜索并查看其他人的问题及其答案之前,请先阅读我的具体问题。

此处的大多数其他主题都涉及如何将 UTF-8 设为文本导​​入向导中的默认选项。但是,我完全不想使用文本导入向导。

我有 CSV 文件,想通过双击打开它们。Excel 会自动打开它们,但即使我使用 regedit 技巧使用 65001 (UTF-8) 作为默认编码,文件仍然无法正确显示。

有什么方法可以强制进行这种编码开幕一个文件,而不必进口它?

提前致谢

(使用美国英语的 Excel 2016,并且我的 Windows 7 区域配置设置为西班牙语(美国),我不知道这是否重要,但它实际上是为了处理默认逗号作为分隔符)

编辑以澄清:在执行注册表技巧强制使用 utf-8 进行导入后,打开 CSV 文件时其他语言的重音符号和字符仍会显示为奇怪的代码。但我没有导入(这个技巧在那里按预期工作);我直接打开文件。

答案1

您可以使用 PowerShell 脚本打开 CSV 文件并自动将其传递给 Excel。该脚本会默默使用 Excel 的文本导入方法,该方法可处理 UTF-8 编码,并且作为奖励,它始终将值视为文本

将此脚本的快捷方式放在您的发给Right click » SendTo » myScript文件夹,以便您可以通过(简单方法)打开所有 CSV 文件

(或者)

您可以使用执行程序将脚本转换为可执行文件 (.exe)。现在您可以右键单击 .csv 文件,然后在“打开用' 您选择此 .exe 作为打开 CSV 文件的默认程序(高级方法)

它能做什么

  • UTF-8 字符显示正确
  • 可以打开多个 CSV 文件。将每个 CSV 内容存储为同一工作簿中的新工作表
  • 所有值均视为纯文本。Excel 内置的 CSV 处理程序不提供任何解释

    • 0001保留0001并且不转换为1
    • -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» 打开您的发送文件夹Enter
  • 通过右键单击»新建»快捷方式创建一个新的快捷方式并粘贴此行。不要忘记将路径更改为您放置脚本的路径

“%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe”-NoProfile -NonInteractive -WindowStyle Hidden -File“C:\my\folder\myScript.ps1”

比较

  • 新方式:通过脚本打开(通过 sendto 或 PS2EXE 转换的可执行文件)

在此处输入图片描述

  • 老方法:双击打开

在此处输入图片描述


评论

  • PS2EXE 无法在 Windows 10 上运行,因为 PS2EXE 不支持 .NET 4.5 或更高版本。该程序可在装有 .NET 4.0 的 Windows 7 上运行

  • 在我的第一次测试中,Excel 在尝试显示中文 UTF-8 字符时确实显示乱码。然而,在我的测试过程中,这种行为发生了变化,现在两种方法都可以正确处理 UTF-8。我不知道是什么原因造成的

相关内容