Eu tenho um banco de dados que rastreia as vendas de widgets por número de série. Os usuários inserem dados e quantidade do comprador e digitalizam cada widget em um programa cliente personalizado. Eles finalizam o pedido. Tudo isso funciona perfeitamente.
Alguns clientes desejam uma planilha compatível com o Excel dos widgets que adquiriram. Geramos isso com um script PHP que consulta o banco de dados e gera o resultado como um CSV com o nome da loja e os dados associados. Isso funciona perfeitamente bem também.
Quando aberto em um editor de texto como o Bloco de Notas ou vi, o arquivo fica assim:
"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"
Como você pode ver, os números de série estão presentes (neste caso duas vezes, nem todos os seriais secundários são iguais) e são longas seqüências de números. Quando esse arquivo é aberto no Excel, o resultado se torna:
Account Number Store Name S1 S2 S3 Widget Type Date
4173 SpeedyCorp 2.68435E+17 2.68435E+17 848 Model Widget 2011-01-17
Como você deve ter observado, os números de série são colocados entre aspas duplas. O Excel parece não respeitar qualificadores de texto em arquivos .csv. Ao importar esses arquivos para o Access, temos zero dificuldades. Ao abri-los como texto, sem problemas. Mas o Excel, sem falhas, converte esses arquivos em lixo inútil. Tentar instruir os usuários finais na arte de abrir um arquivo CSV com um aplicativo não padrão está se tornando, digamos, cansativo. Existe esperança? Existe uma configuração que não consegui encontrar? Esse parece ser o caso do Excel 2003, 2007 e 2010.
Excel does not seem to respect text qualifiers in .csv files
- as aspas duplas não são qualificadores de texto, elas simplesmente permitem vírgulas nos seus dados; se você não usar vírgulas nos dados, elas não terão sentido . Todos os dados em um arquivo CSV não são digitados, portanto, o Excel pode apenas adivinhar que seu número de série grande é um número , e é aí que você encontra a precisão máxima do Excel de 15 dígitos, que é o que está truncando seus números.