A abertura do arquivo CSV no Excel corrompe a coluna do número de telefone

3

Eu exporto dados do listview para o arquivo csv. Existe uma coluna, 'Contact No'. O tipo de dados desta coluna é 20 tamanho de campo do texto no acesso do MS. Abrindo este csv com o Bloco de Notas, ele mostra o valor real dos dados, 12345678901234567890. Mas, abrindo-o com o MS Excel, ele mostra 12345678901234500000.: O

Por que os últimos 5 caracteres foram alterados para todo o zero? No Excel, eu reformato esta coluna para o formato de categoria 'Personalizado' ou 'Número'. Depois disso, mostra 12345678901234500000. Se não for re-formatado, normalmente mostra 1.23457E + 19.

    
por soclose 17.06.2011 / 04:20

7 respostas

4

Uma sugestão é colocar um apóstrofo na frente do número quando você exportar os dados para o formato CSV. Então, em vez de 12345678901234567890 export '12345678901234567890 .

    
por 17.06.2011 / 04:30
3

O Excel está tratando os dados como um número de ponto flutuante, que pode ser aproximado como 1.23457E + 19.

O ponto flutuante não fornece 20 dígitos de precisão.

É uma limitação do ponto flutuante. Consulte esta página

    
por 17.06.2011 / 04:32
3

Em primeiro lugar, você não quer tratar isso como um número, porque 0123 se tornaria 123, que é um número de telefone totalmente diferente. Encapsular os valores entre aspas duplas ao exportar deve ser suficiente para fazer o Excel tratar a coluna como texto.

No passado, notei que o Excel fornece muito pouco controle sobre o processo de importação de CSV, portanto, dependendo dos seus requisitos, você poderia usar o VBA para obter mais controle sobre a importação ou pós-processamento do CSV ou usando o Open Office.

    
por 17.06.2011 / 04:32
2

Se você abrir um arquivo CSV a partir da janela do explorador (clicando duas vezes no arquivo), o Excel tentará determinar automaticamente os campos para você.

Se você abrir o Excel e abrir o arquivo CSV, terá a opção de escolher os delimitadores e os tipos de campo. Isso permitiria que você definisse 'Contact No' como texto e ele seria importado corretamente.

    
por 17.06.2011 / 05:17
1

A resposta, como já foi sugerido aqui, é que o valor deve ser uma string.

Esta é apenas uma tentativa de ajudar você a entender por quê. Isso significa que ele será tratado como uma string no Access também, com o qual você parece estar preocupado agora. A melhor maneira de ver a diferença e talvez entender o que está sendo dito é formatar algumas células diferentes em uma planilha de excel.

Forma um como formato geral, um como um número e um como texto. (Formatar > Células > Número da categoria) Em seguida, digite um número de 20 caracteres, como 99999999999999999999. Salve o arquivo como formato csv e abra no bloco de notas para ver a diferença. Precedendo uma entrada com 'apenas informa ao Excel o formato da célula de outra maneira.

Você menciona a exportação de dados do listview para o csv, portanto, deve controlar os dados do listview que deseja salvar como texto, não numérico. O acesso não terá um problema com isso, a menos que você tente usar os valores como números, mas eles parecem ser usados como números de identificação, não como valores.

Qual é a fonte dos dados do listview? O manuseio do formato da célula antes que os dados entrem na sua planilha deve resolver seu problema.

    
por 19.06.2011 / 16:20
1

Nas minhas experiências, o Excel detectará automaticamente o formato de um campo CSV, a menos que você especifique como

="Data Here"

20,       5.5%,      "0404 123 351", "3-6",  ="123"
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

Não tenho certeza sobre como o MS Access irá interpretar os campos acima, no entanto.

    
por 03.08.2011 / 10:33
1

Use apenas "=0123" no arquivo CSV, incluindo aspas. Tenha em atenção que voltar a guardar este ficheiro como outro ficheiro CSV irá anular a parte =" ... " .

Há também uma forma de HTML se você quiser usar uma tabela simples como sua planilha, que provavelmente preservará seu estado quando for salva novamente, apenas que não será mais CSV:

<TD style="mso-number-format:@;">0123</TD>

Não use o truque de aspas simples (') para resolver o problema de importação, pois ele só é aplicável ao editar campos enquanto você já está no Excel. Dito de forma diferente, se você tentar importar um arquivo CSV com um campo '0123, você acabará com uma aspas simples em seu campo de string também.

    
por 06.11.2012 / 01:15