Como faço para o Excel importar um arquivo CSV com vírgulas em alguns dos campos de conteúdo?


13

Como faço para o Excel importar meu arquivo CSV ?

Arquivo

Eu tenho um arquivo que afirma ser CSV. Ele contém 10 campos, todos rodeados por aspas duplas (sim, até as datas e os números.) 2 ou 3 desses campos contêm vírgulas . Mas os dados nesses campos também são cercados por aspas.

Problema

Quando tento abrir esse arquivo, o Excel ignora completamente as aspas e assume que elas fazem parte dos dados.

Portanto, divide os campos que contêm vírgulas em várias colunas.

Isso é ruim, pelo menos para mim.

Dados de exemplo

"20051", "", "30 de setembro de 2009 02:53:23", "SOMETEXT", "", "5000", "2000000", "2008 - 99999 - -99999, 2008 - unk - unk", "191 - SOMETEXT - SOMETEXT, 192 - SOMETEXT - SOMETEXT, 193 - SOMETEXT - SOMETEXT, 194 - SOMETEXT - SOMETEXT, 195 - SOMETEXT - SOMETEXT, 196 - SOMETEXT - SOMETEXT "," STETEXT - SOMETEXT "," - SOMETEXT - SOMETEXT, 141 - SOMETEXT - SOMETEXT "
"20052", "SOMETEXT", "08 de setembro de 2009 07:56:50", "SOMETEXT", "", "50000", "5000000", "2007 - 99999 - 99999", "146 - SOMETEXT - SOMETEXT, 145 - SOMETEXT - SOMETEXT, 147 - SOMETEXT - SOMETEXT, 148 - SOMETEXT - SOMETEXT "," 103 - SOMETEXT - SOMETEXT, 1131 - SOMETEXT - SOMETEXT "

O que eu tentei?

Eu usei o recurso de importação para especificar delimitadores e tal, mas isso não parece ajudar.

Tentei alternar "Delimitador de texto" de aspas duplas para "{none}" e vice-versa. Isso parece afetar apenas a primeira coluna. Isso seria razoável se fosse possível clicar nas outras colunas e aplicar essa configuração a cada uma. Mas esse não é o caso, e parece que isso se destina a funcionar em colunas.

O que mais posso tentar?


1
Qual versão do Excel? E está totalmente corrigido?
10139 harrymc

Eu já vi isso em 2002 e 2007. Eu não tenho certeza sobre 2007, mas eu tenho certeza que 2002 foi totalmente atualizado
Rory Becker

Você pode fornecer um link para o CSV? Ou uma versão reduzida que demonstra o problema?
21139 Josh Comley

Adicionado dados de exemplo acima
Rory Becker

Respostas:


13

Eu apenas tentei um teste rápido que replicou seu problema.

Criei um CSV de 1 linha no Word (que usa aspas inteligentes) como test.csv "123", "4,5,6" e ele foi aberto no Excel como você descreveu.

Tente substituir "e" por "


Tendo brincado com sua amostra, noto que o Excel não gosta dos espaços entre os campos

por exemplo, em vez de

"20051", "", "2009 Sep 30 02:53:23", ...

você quer

"20051","","2009 Sep 30 02:53:23",...

uma substituição de Expressão Regular decente deve ser capaz de lidar com isso com

Find:    |("[^"]*",) |
Replace: |\1|

(caracteres de canal apenas para sugestões visuais)

Ou simplesmente modifique o código .Net se você tiver acesso a ele ;-)

Além disso, como Arjan apontou , talvez você também precise converter o arquivo de UTF-8 em ANSI para impedir que a célula A1 contenha a BOM e seus qoutes circundantes.

Eu me deparei com o Catch 22 do CSV codificado em ANSI que não manipula caracteres internacionais e o CSV codificado em UTF não sendo manipulado pelo Excel; e não encontrou uma solução durante a manutenção do CSV. Se o suporte a caracteres internacionais for necessário, os formatos XML (ou XLS nativo) parecerão o único caminho a percorrer - ao custo da simplicidade.


Não há aspas inteligentes envolvidas. Este arquivo foi gerado para usar aspas padrão de um programa escrito em .Net.
Rory Becker

Não pretendia dizer que os arquivos UTF-8 devessem ser codificados de maneira diferente. Mas, ao importar UTF-8, é preciso dizer ao Excel qual é a codificação. E o UTF-8 está escondido em algum lugar abaixo nessa longa lista de codificações.
Arjan #

Importei muitos arquivos CSV codificados em UTF-8. Tenho certeza de que eles tinham uma lista técnica.
Arjan #

@ lumbarious: Você é uma estrela! Funciona perfeitamente ... Eu não posso acreditar que o Excel não consegue lidar com este :(
Rory Becker

1
Sim, aparentemente os espaços entre os campos confundem completamente o Excel 2011. A remoção dos espaços corrige o problema e também impede o Excel de incluir aspas como parte dos dados. Meu palpite é que existe uma especificação em algum lugar que afirma que aspas duplas apenas delimitam dados se estiverem diretamente adjacentes à vírgula.
Peter Gluck

8

Esse problema me atormenta há vários anos. Acabei de descobrir a solução e ela é mencionada nas respostas acima, mas não explicitamente explicitada.

É o espaço após a vírgula!

Isso não importa para o Excel;

HEADER1, HEADER2
"1,000", "2,000"

Enquanto

HEADER1,HEADER2
"1,000","2,000"

Trabalho!


2
Bem-vindo ao Super Usuário! Esta resposta foi escrita de uma maneira útil e clara. Obrigado por sua contribuição e esperamos que você permaneça por aqui.
User1717828

YAAAS! A resposta aceita tem a resposta real para a pergunta enterrada ao contrário desta resposta. A operação não usa aspas inteligentes.
dardub


2

Quando tento abrir esse arquivo, o Excel ignora completamente as aspas e assume que elas fazem parte dos dados. Portanto, divide os campos que contêm vírgulas em várias colunas.

Se você não estiver acidentalmente usando aspas inteligentes, como a lumbarius sugeriu , e supondo que você esteja no Windows: isso pode ser devido às suas configurações regionais. Ao clicar duas vezes ou usar Arquivo »Abrir, o Excel não solicita detalhes, mas simplesmente usa essas configurações.

Ainda assim, a chamada manual da função de importação (como você fez) deveria ter funcionado, por isso duvido que alterar as configurações regionais ajude ...


Isto parece mais como um comentário em vez de uma resposta ...
Metafaniel

Esta sugestão resolveu meu problema exatamente! A importação de CSV (Dados> Do Texto / CSV) não estava funcionando conforme o esperado, mas se eu fizesse Arquivo> Abrir no arquivo CSV, funcionou. Pude copiar / colar toda a tabela na minha outra pasta de trabalho.
WOUNDEDStevenJones

1

Você verificou a codificação de caracteres do seu arquivo? Tente definir a codificação de caracteres para UTF-8.

Você pode usar o notepad2 para alterar a codificação de caracteres.


Codificação é relatado por Notepad2 ser "UTF8 com a assinatura"
Rory Becker

Em seguida, durante a importação, você precisa rolar para baixo na lista de codificação. O UTF-8 está oculto em algum lugar baixo da lista. (Não é necessário usar arquivos CSV codificados em UTF-8, mas como sua entrada já é UTF-8, você realmente precisa informar ao Excel o que deve ser usado. Observe que um caractere de citação normal seria codificado da mesma maneira em ASCII, Western e UTF -8, mas talvez a assinatura (a Byte Order Mark) ou alguns outros personagens fazem asneira)?
Arjan

@ Peter Por que alterar o link oficial para a Wikipedia? Isso não faz nenhum sentido? Não queremos enviar pessoas demais, e isso certamente não garante uma edição - especialmente em um post de dois anos.
slhck

1

Apenas adicionando às respostas aqui: concentre-se nos ESPAÇOS após o COMMAS em seus arquivos CSV. O Excel não gosta disso se você citou campos nos seus dados.

Gostos do Excel (4 colunas de dados):

a, b, c, d

Mas não gosta (3 colunas de dados):

a, "b, c", d

Ele gosta (3 colunas de dados):

a,"b, c",d

Acabei de acertar esse problema. Eu estava batendo minha cabeça contra a parede até chegar a essa nota. Isso é simplesmente incrível. Estou executando o Excel 2017 e que tolice ainda existe ...
Albert Godfrind

1

Encontrei este problema hoje e também encontrei uma solução que funcionou para mim.

Meu ambiente / contexto: eu tenho uma página da web com algumas perguntas (de formulário) que contêm aspas e vírgulas. As perguntas e as respostas são retiradas do banco de dados e gravadas em um arquivo do Excel para fins de relatório.

Eu tive o mesmo problema descrito acima: As perguntas que incluíam aspas e vírgulas estavam sendo divididas em várias colunas no Excel.

Para meus propósitos, o uso de duas aspas simples no lugar de aspas duplas funcionou.

-> no site, duas aspas simples se parecem com aspas duplas para os visitantes do site

-> No arquivo do Excel, novamente, duas aspas simples se parecem com aspas duplas para os usuários que visualizam os dados do relatório

Sei que essa solução não funcionará para todos, mas espero que ajude alguém.


1

Consegui fazer isso usando:

a,b,c,"=""(1,2,3)"""

que fornece quatro colunas:

|  a  |   b   |   c   |   (1,2,3)   |

0

Outra maneira de fazer isso:

  1. Abra o arquivo no LibreOffice ou no OpenOffice Calc.
  2. Defina as opções de importação corretas, como UTF-8, separadas por vírgula, ...
  3. Armazene o arquivo como ods ou xls
  4. Abra o novo arquivo no Excel.

Dessa forma, você pode definir a codificação correta como UTF-8, que muitas (todas?) Versões do Excel não podem manipular corretamente sem a BOM e não precisa se preocupar com uma regex que possa substituir algum texto dentro do campo e você não percebe isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.