Importando identificadores numéricos longos para o Excel

1

Eu tenho alguns dados em um banco de dados que usa ids que têm a forma de 16 dígitos. Em algumas situações, eu preciso exportar os dados de forma que possam ser manipulados no Excel.

Para exportar os dados para um arquivo e importá-los para o Excel.

Eu tentei vários formatos de arquivo e estou preso.

O problema que estou enfrentando é que, ao ler um arquivo no Excel com uma célula que parece um número, o Excel o trata como um número.

O problema é que (até onde eu posso dizer) todos os valores numéricos no excel são pontos flutuantes de precisão dupla que têm uma precisão de menos de 16 dígitos. Então meus ids são alterados: muitas vezes o último dígito é alterado para 0.

Até agora só consegui convencer o excel a manter o Id inalterado, quebrando-o: adicionando uma letra ou símbolo ao Id. No entanto, isso significa que, para usar o valor novamente, ele deve ser "ininterrupto".

Existe uma maneira de criar um arquivo no qual eu possa especificar que o Excel deve tratar o valor como um texto sem alterar o valor? Ou existe uma maneira de deixar o excel tratar o valor como um longo (inteiro de 64 bits)?

    
por Niels Basjes 03.10.2012 / 23:29

4 respostas

3

Você pode colocar o número entre aspas e adicionar um sinal de igual antes, assim: ="001145" (isso é no CSV, é claro)

    
por 03.10.2012 / 23:55
1

A maneira padrão de forçar algo que parece um número a ser tratado como texto é colocar uma única citação, a.k.a. apostrophe ( '), na frente dela.

    
por 03.10.2012 / 23:54
1

Você pode forçar o Excel a importar isso como texto de um arquivo .csv. Depois de criar seu arquivo .csv,

  1. Selecione Data > From Text
  2. Na etapa 1 do Assistente de importação de texto, escolha Delimited
  3. Na etapa 2 do Assistente de importação de texto, escolha Comma
  4. Na etapa 3 do Assistente de importação de texto, selecione sua coluna de ID longa e escolha Text data format .
  5. Depois termine.

O Excel tratará sua longa coluna de ID como texto desde o início, em vez de tentar convertê-la em um número e depois voltar ao texto com a perda de dados resultante.

Veja um exemplo da mesma cadeia de dados sendo importada e formatada de três maneiras diferentes de .csv:

Note, se você tentar abrir o .csv diretamente (o que o Excel fará com prazer por você), você já estará além do ponto de poder atribuir um valor de tipo de dados a suas colunas - o Excel terá feito isso (erroneamente) para você.

    
por 04.10.2012 / 19:09
1

Além do que classifiquei como resposta creditada, descobri que no LibreOffice eu posso exportar uma planilha no que eles chamam de "Excel 2003 xml". Esse formato é um XML que parece muito fácil de gerar e tem esse tipo de definição para uma célula em uma planilha:

<Cell>
  <Data ss:Type="String">12345678901234567890</Data>
</Cell>
<Cell>
  <Data ss:Type="Number">1.23456789012346E+019</Data>
</Cell>

Quando eu simplesmente dou tal xml a extensão xlsx, meu LibreOffice é aberto corretamente sem nenhuma pergunta.

    
por 05.10.2012 / 21:40