Como fazer com que o Excel interprete a vírgula como um delimitador padrão em arquivos CSV?

95

Eu tenho vários arquivos .csv. Alguns deles são delimitados por vírgulas, outros são delimitados por tabulação (talvez devam ser chamados .tsv ...)

A csvextensão é associada ao Excel quando o Excel está instalado. No entanto, se eu abrir um desses arquivos com o Excel, tudo será despejado na mesma coluna e a vírgula não será interpretada como um delimitador.

Posso vez de Arquivo -> Importar ..., selecione o arquivo e escolher a forma precisa para interpretar o conteúdo (delimitadores, tipos de dados, etc), mas na maioria das vezes eu só quero olhar para o arquivo através de uma clara vista de mesa. Não quero processá-lo com o Excel.

Existe uma maneira de o Excel interpretar automaticamente o delimitador e mostrar o arquivo CSV como uma tabela adequada assim que for aberto? Preciso disso para poder usar o Excel como um visualizador rápido para esses arquivos.

Eu suspeito que deve haver uma maneira, caso contrário, o Excel não se associaria a arquivos CSV.

Szabolcs
fonte
Eu realmente entendo que a resposta escolhida não responder à sua pergunta, mas o segundo deve ser realçado porque oferecem uma solução global, que funciona acros compartilhamento por e-mail, rede, etc.
Rafareino

Respostas:

81

Ao abrir arquivos CSV, o Excel usará uma configuração regional do sistema chamada List separatorpara determinar qual delimitador padrão usar.

O Microsoft Excel abrirá arquivos .csv, mas, dependendo das configurações regionais do sistema, poderá esperar um ponto-e-vírgula como um separador em vez de uma vírgula, pois em alguns idiomas a vírgula é usada como separador decimal. (da Wikipedia )


No Windows , você pode alterar a List separatorconfiguração Regional and Language Optionsconforme especificado no site de suporte do Office :

Alterar o separador em um arquivo de texto CSV

  1. Clique no menu Iniciar do Windows.
  2. Clique em Painel de controle.
  3. Abra a caixa de diálogo Opções regionais e de idioma.
  4. Clique na guia Opções regionais.
  5. Clique em Personalizar / Configurações adicionais (Win10).
  6. Digite um novo separador na caixa Separador de lista.
  7. Clique em OK duas vezes.

Nota : isso só funciona se o símbolo decimal também não for designado como vírgula (de acordo com a citação da Wikipedia acima). Se for, o Excel não usará vírgula como separador de lista, mesmo se escolhido. Para muitas regiões fora dos Estados Unidos, vírgula é o símbolo decimal padrão.

No Mac OS X , essa configuração parece ser deduzida da configuração do separador decimal (no painel Idioma e região das Preferências do sistema , vá para Avançado ). Se o separador decimal for um ponto, o separador CSV padrão será uma vírgula, mas se o separador decimal for uma vírgula, o separador CSV padrão será um ponto e vírgula.

Como você disse no comentário, existe uma alternativa para os usuários de Mac verem rapidamente esses arquivos CSV. É um plugin para o Quick Look chamado quicklook-csv, que lida com a detecção de separadores.

zakinster
fonte
Obrigado, isso faz sentido. Eu acho que isso simplesmente não interpretará as guias como delimitadores por padrão (o que também faz sentido, pois CSV significa Valores Separados por Vírgula, mas as pessoas usam guias em CSVs na prática e eu preciso lidar com isso).
precisa
O @Szabolcs Excel não tenta detectar o delimitador ao abrir um arquivo CSV (usando file-> open ou o explorer ), apenas usa a configuração do sistema. No entanto, ele conseguirá detectar automaticamente o delimitador (tabulação, vírgula, ponto e vírgula ou espaço) enquanto estiver usando o recurso de importação .
zakinster
1
Sua resposta também foi válida no OS X: ainda é o ponto decimal / vírgula que causa o "problema" (como você mencionou na resposta).
precisa
1
Edição posterior: desculpas! isso funciona! Aparentemente, é necessário reiniciar o programa e / ou sair / entrar novamente para aplicar a alteração. Não sei exatamente quando, mas pouco tempo depois da minha mudança, isso de repente funcionou.
Mmo
1
No Mac OS X, não se esqueça de SAIR do Excel depois de fazer as alterações. O Excel permanecerá aberto se você fechar todas as folhas abertas. Clique em Excel> Sair do Excel ou apenas pressione Command + Q e pronto.
Paulo Pedroso
94

Se você não deseja modificar o formato do arquivo e está direcionado SOMENTE para o Excel, use o seguinte truque do Excel para ajudá-lo.

Adicione uma nova linha na parte superior do arquivo com o texto "sep=,"(incluindo aspas) para que o Excel abra o arquivo com "," como separador de lista.

É um truque muito fácil para evitar alterar as configurações regionais do Windows e obter um resultado consistente. Mas é específico do Excel.

user280725
fonte
1
Certifique-se de usá-lo apenas para olhar o arquivo e não modificá-lo; caso contrário, você poderá encontrar um dos seguintes problemas: theonemanitdepartment.wordpress.com/2014/12/15/…
Wouter
Melhor ainda, se você precisar redistribuir esse arquivo para outras pessoas, para garantir que o Excel seja capaz de entender o arquivo, independentemente de suas configurações. Eu sempre uso o csv para poder usar qualquer sistema de controle de versão para compartilhar e colaborar nesses arquivos, mas lutei com vírgula x ponto-e-vírgula, e sempre pedi a todos para alterar suas configurações, não mais. Muito obrigado!
Rafareino 10/09/16
1
Sozinho em cima de quê?
NateS 18/10/16
11

Você não precisa das aspas ao redor sep=,- desde que seja a primeira linha do arquivo que funcione, pelo menos com o Excel 2016.

Descobri que, se o arquivo estiver delimitado por tabulação, sep=\tfuncionará bem, com e sem as aspas.

Stephen Hemingway
fonte
4

A resposta aceita está correta, mas eu sou uma pessoa visual. Aqui estão todas as etapas no formato de captura de tela de como fazer isso no Windows 10.

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

Sam B
fonte
2
Muito útil! Lembre-se (como já mencionado em algum lugar acima) que List separatorserá ignorado se o mesmo símbolo for usado Decimal symbol. Você encontrará frequentemente ,como símbolo decimal, portanto, altere-o para outra coisa (por exemplo .) ao definir List separatorpara ,.
Dirk
1

Quando o separador nas configurações regionais não for uma vírgula, mas um ponto-e-vírgula (separador holandês), renomeie o arquivo CSV para um arquivo TXT. Clique com o botão direito do mouse no arquivo TXT e selecione "Abrir com" e selecione "Excel". No Excel, selecione a primeira coluna, selecione os dados na faixa de opções e separe o texto em colunas.

OU

Instale o LibreOffice e abra o arquivo CSV com o LibreOffice Calc.

Eric VDB
fonte
1

Eu tinha um .csvarquivo com separador ;e configurações regionais definidas como separador de lista ;. No entanto, o Excel ainda não analisou as colunas.

insira a descrição da imagem aqui

Acabou sendo um problema de codificação. Os arquivos foram exportados do SQL Server Management Studio 2005 e codificados UCS-2 LE BOM. Usando o Notepad ++, mudei a codificação para UTF-8e tudo começou a funcionar.

Ogglas
fonte
0

Inspecione o arquivo CSV em um editor simples como o Bloco de Notas para verificar se ele está formatado corretamente.

Eu adicionei esta resposta depois que resolvi um bug estúpido em que os arquivos CSV que eu criei com o VB não foram abertos com colunas separadas no Excel. Descobri que, da maneira que escrevi, as linhas envolviam cada linha entre aspas. O Excel ocultou as aspas e mostrou a linha inteira na coluna A, fazendo parecer que ignorou meus separadores de vírgula.

edj
fonte
0

a melhor maneira será salvá-lo em um arquivo de texto com extensão csv

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name  As String

    Dim pathfile As String


    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\1\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub
AzizD
fonte
0

Para os holandeses, tive um problema que o Excel 2008 no Windows 7 não aderiu ao RFC4180:

"Os campos contendo quebras de linha (CRLF), aspas duplas e vírgulas devem ser colocados entre aspas duplas."

Um arquivo separado por vírgula apresentava corretamente campos com uma vírgula (separador decimal holandês) entre aspas duplas. Na localidade holandesa, o separador decimal é ,e o separador de lista é ;para que o Excel não possa ler um arquivo ,usado para ambos (nem mesmo depois de alterar explicitamente o separador de lista para ,no Painel de Controle).

A entrada se parece com:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

A solução foi dada por @ user280725:

Use o Bloco de notas para inserir como primeira linha:

sep=,

(Isso significa que a Nota do usuário @zakinster em sua solução não precisa mais ser aplicada.)


Interessante: com o arquivo csv ainda carregado, se você definir o local para inglês dos EUA no Painel de Controle e salvar o arquivo, ele será convertido para o formato inglês dos EUA (vírgula como separador de lista e ponto como separador decimal).

Paul Ogilvie
fonte