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?
fonte
Respostas:
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
você quer
uma substituição de Expressão Regular decente deve ser capaz de lidar com isso com
(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.
fonte
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;
Enquanto
Trabalho!
fonte
Você também pode tentar o CSVEd, que é gratuito.
fonte
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 ...
fonte
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.
fonte
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):
Mas não gosta (3 colunas de dados):
Ele gosta (3 colunas de dados):
fonte
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.
fonte
Consegui fazer isso usando:
que fornece quatro colunas:
fonte
Outra maneira de fazer isso:
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.
fonte