Importação de CSV do Excel tratando cadeias de números entre aspas como valores numéricos, não sequências de caracteres

11

Eu tenho um aplicativo da web que está exportando seus dados para um arquivo CSV. Veja uma linha de exemplo do arquivo CSV em questão:

28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"

Como não posso postar uma imagem, terei que explicar os resultados no Excel. O campo "0316295" é transformado em um número e o 0 inicial desaparece. O "8316012,8315844" é interpretado como um único número: 83,160,128,315,844. Isto é, obviamente, não o resultado pretendido.

Eu já vi pessoas recomendarem uma citação simples para esses casos, mas isso também não funciona.

28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"

A aspa simples é visível em todos os momentos na célula no Excel, mas se eu inserir um número com uma aspas simples, eu mostro apenas a string desejada e não a aspa simples com a string.

Importar não é o mesmo que digitar, parece.

Alguém tem uma solução aqui?

    
por Michael Oryl 19.03.2013 / 17:21

6 respostas

9

Isso deve funcionar

28,"65154",02/21/2013 00:00,"false",="0316295","=""8316012,8315844""","MALE"
    
por 19.03.2013 / 17:38
12

Para manter o (s) zero (s) inicial (is), você pode definir o formato dessa coluna específica como Texto no Assistente de Importação de Texto.

  1. Inicie o Assistente de importação de texto acessando a guia Dados & clicando em Do texto .
  2. Selecione o arquivo CSV que você deseja importar.
  3. Escolha Delimitado & aperte Próximo .
  4. Desmarque a Guia (padrão). Escolha Vírgula . Certifique-se de que o Qualificador de texto esteja definido como " . Clique em Próximo .
  5. Aqui é onde você pode especificar os formatos . Clique no cabeçalho da coluna cujo (s) zero (s) inicial (is) você deseja preservar. Selecione Texto . (Veja a imagem abaixo)

  6. CliqueemConcluir&emseguida,selecioneumlocaladequadoparaseusdados.Resultadodaamostra:

Editar : Existe outra maneira ; ter o aplicativo da web exportado para um arquivo .TXT delimitado por vírgulas em vez de .CSV (ou apenas alterar a extensão do arquivo exportado após salvá-lo). Isso força o Excel a percorrer o assistente de importação quando abrir o arquivo. Como uma vantagem adicional, reduz as chances de os usuários modificarem ou violarem seus dados brutos originais.

    
por 19.03.2013 / 18:51
3

O Excel trata valores numéricos que começam com um caractere de tabulação como texto.

<tabchar>000000100000200000,ABC,DEF

aparecerá como:

000000100000200000|ABC|DEF

| é o limite da célula (para fins de ilustração). Portanto, por exemplo, se o seu sistema gerar o arquivo CSV usando o conjunto de caracteres utf-8, você poderá adicionar o &#x0009; (Tab Char em Hex) antes do valor numérico para forçar o Excel a interpretá-lo como texto.

    
por 29.08.2015 / 22:06
1

O Excel detectará automaticamente o formato de um campo CSV, a menos que a coluna CSV esteja neste formato:

"=""Data Here"""

Isso também funciona para as planilhas do Google

    
por 26.07.2017 / 09:25
0

Você teria que usar a funcionalidade "Dados - > Obter dados externos - > Importar texto do arquivo" no Excel para exibi-lo como texto. Este é o assistente de importação de texto @Kaze mencionado.

A única maneira de forçar o Excel a exibir números como texto da entrada, sem que o usuário precise fazer nada, é gerar um arquivo excel e especificar um "formato numérico personalizado". Eu recomendo usar uma biblioteca de exportação XLS para isso, pois não parece tão simples quanto adicionar uma linha de texto de configuração em um arquivo CSV.

    
por 05.11.2013 / 22:50
0

tente a função de limpeza para valores que estão confusos. Por exemplo = clean ("12345678901234567890"). Ele funciona para mim para números, datas, horários, etc. Eu alertaria que, como isso não é de todo o propósito desta função, isso poderia parar de funcionar com novas versões, etc.

    
por 02.12.2015 / 22:17