Codificação UTF-8 do Microsoft Excel sem importação

Codificação UTF-8 do Microsoft Excel sem importação

Antes que você me diga para pesquisar mais e ver as perguntas e respostas de outras pessoas, leia minha pergunta precisa.

A maioria dos outros tópicos aqui trata de como tornar o UTF-8 a opção padrão no assistente de importação de texto. No entanto, gostaria de evitar ter que usar o assistente de importação de texto.

Tenho arquivos CSV que desejo abrir clicando duas vezes. O Excel os abre automaticamente, mas mesmo que eu tenha feito o truque do regedit de usar 65001 (UTF-8) como codificação padrão, os arquivos ainda não são exibidos corretamente.

Existe alguma maneira de forçar essa codificação noaberturade um arquivo em vez de ter queimportaristo?

desde já, obrigado

(usando o Excel 2016 em inglês dos EUA e minha configuração regional do Windows 7 está definida para espanhol (Estados Unidos), não sei se isso é importante, mas na verdade era para lidar com vírgulas padrão como separadores)

EDIT para esclarecimento: acentos e caracteres de outros idiomas ainda aparecem como códigos estranhos ao abrir um arquivo CSV após fazer o truque do regedit de forçar o utf-8 para a importação. Porém, não estou importando (o truque funciona como esperado); Estou abrindo o arquivo diretamente.

Responder1

Você pode usar um script do PowerShell para abrir arquivos CSV e passá-los automaticamente para o Excel. O script usa silenciosamente o método de importação de texto do Excel, que lida com a codificação UTF-8 e, como bônus, trata os valores sempre como texto

Coloque um atalho para este script no seuenviar parapasta para que você possa abrir todos os arquivos CSV via Right click » SendTo » myScript(método fácil)

(ou)

Você pode usarPS2EXEpara converter seu script em um executável (.exe). Agora você pode clicar com o botão direito em um arquivo .csv e em 'Abrir com' você escolhe este .exe como seu programa padrão para abrir arquivos CSV (método avançado)

O que faz

  • Os caracteres UTF-8 são exibidos corretamente
  • Pode abrir vários arquivos CSV. Armazena cada conteúdo CSV como uma nova planilha na mesma pasta de trabalho
  • Todos os valores são tratados como texto puro. Nenhuma interpretação do manipulador CSV integrado do Excel

    • ou seja. 0001permanece 0001e não é convertido em1
    • ou seja. -A122:23ou =AZ1+32não são interpretados como fórmula e permanecem como estão

Como usar

  • Crie um novo arquivo de texto e cole o script abaixo. Uma versão comentada pode ser encontradaaqui
$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()
    }
}

  • Salve-o em algum lugar como C:\Tools\myScript.ps1. (Observe a extensão .ps1)
  • Abra sua pasta sendto via WinR» shell:sendto» Enter
  • Crie um novo atalho clicando com o botão direito »Novo» Atalho e cole esta linha. Não se esqueça de mudar o caminho para o seu próprio onde você colocou seu script

"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe " -NoProfile -NonInteractive -WindowStyle Hidden -File"C:\minha\pasta\myScript.ps1"

Comparação

  • Nova forma: Aberto via script (através de sendto ou executável convertido PS2EXE)

insira a descrição da imagem aqui

  • Maneira antiga: Aberto com clique duplo

insira a descrição da imagem aqui


Observações

  • PS2EXE não funciona no Windows 10 porque o .NET versão 4.5 ou superior não é compatível com PS2EXE. O programa funciona no Windows 7 com .NET 4.0

  • Em meus primeiros testes, o Excel mostrou algo sem sentido ao tentar exibir caracteres UTF-8 chineses. No entanto, durante meus testes, esse comportamento mudou e agora ambos os métodos lidam com UTF-8 corretamente. Não tenho ideia do que causou isso

informação relacionada