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.
fonte
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.Respostas:
Excel é lixo inútil.
Solução
Eu ficaria um pouco surpreso se algum cliente que desejasse seus dados em um formato Excel não conseguisse alterar a formatação visível nessas três colunas para "Número" com zero casas decimais ou "texto". Mas vamos supor que um pequeno documento de instruções esteja fora de questão.
Suas opções são:
="268435459705526269","",="268435459705526269"
(você também pode="268435459705526269",,="268435459705526269"
salvar 2 caracteres). Isso tem a vantagem de ser exibido corretamente, e provavelmente sendo geralmente útil, mas sutilmente quebrado (como são fórmulas).Tenha cuidado com a opção 3, porque alguns programas (incluindo Excel e Open Office Calc) não tratam mais vírgulas dentro de
=""
campos como escapadas. Isso significa="abc,xyz"
que abrange duas colunas e interromperá a importação.O uso do formato de
"=""abc,xy"""
resolve esse problema, mas esse método ainda o limita a 255 caracteres devido ao limite de comprimento da fórmula do Excel.fonte
Tivemos um problema semelhante no qual tínhamos arquivos CSV com colunas contendo intervalos como 3-5 e o Excel sempre os convertia para datas, por exemplo, 3-5 seria 3 de março, após o que a mudança para numérico nos deu um número inteiro inútil da data. Nós contornamos isso
Você poderia fazer o mesmo aqui, eu acho.
Felicidades
fonte
Melhor solução é gerar XML Workbook. Como isso:
O arquivo deve ter extensão .xml. Excel e OpenOffice abrem-no corretamente.
fonte
Minha solução: tenho o mesmo problema com a importação de números de série. Eles não precisam ser tratados como números, ou seja, nenhuma função matemática é executada nele, mas precisamos do número inteiro lá. A coisa mais simples que tenho é inserir um espaço no número de série. por exemplo, "12345678 90123456 1234". Quando o Excel o importa, ele será tratado como texto em vez de numérico.
fonte
Eu tinha números de conta longos sendo ilegíveis.
Foi assim que eu consertei:
Abra seu arquivo.csv no Libre Office / Open Office (pode ser necessário especificar delimitadores, etc.) e salve o arquivo como um arquivo XML do Excel.
Em seguida, abra esse arquivo no Excel e você verá que as colunas não serão mais alteradas para o formato científico ou o que for. Para segurança, clique com o botão direito do mouse na coluna e defina explicitamente o formato como Texto e salve como formato de arquivo do Excel.
Abra o arquivo no formato Excel e a coluna ainda deve estar ok!
fonte
O Assistente de Importação é a melhor solução para usuários casuais e situações pontuais. Se você precisar de uma solução programática, poderá usar o método QueryTables.Add (que é o que o Assistente de Importação está usando nos bastidores).
fonte