CSV parando de alterar os valores das colunas

1

Aqui está o acordo. Estamos nos aproximando dos limites. Penso no que você pode fazer com o CSV, mas estou me perguntando se alguém tem uma solução.

Temos um arquivo CSV de 357 MB. Faz o download de forma excelente e não demora muito com uma boa conexão.

No entanto, a maioria dos clientes abre esse arquivo no Excel. E há vários problemas:

  • Um campo 00400 será exibido como 40 (zeros à esquerda removidos)
  • Um valor de 0.04088100 se tornará 4.08E-2 (ou algo parecido)
  • Datas e horários são alterados

A correção BAD: Nós tentamos adicionar um caractere = antes do "0040" - ele funciona para arquivos pequenos, mas não para um arquivo grande - o Excel não pode tratá-los como fórmulas, muita memória e arquivos nunca são abertos

A boa correção: Adicionamos um caractere ASCII 28 (a File Stop ou FS , consulte link ) Todos os campos com este valor" oculto "são exibidos corretamente, exceto que são justificados à esquerda (desde que tratado de um texto)

O único problema: Infelizmente a boa correção tem um problema. Quando você usa a formatação para justificar à direita os campos com o CHR (28) à esquerda, há um pequeno espaço à direita, que você não pode excluir porque exclui o caractere correto.

Uma correção POSSÍVEL: Nós fizemos algumas experiências e descobrimos que adicionar CHR (157) à esquerda dos valores de campo abusados pelo Excel também o interrompeu, E justificado à direita. No entanto , eu me sinto muito estranho fazendo isso, e me pergunto se há algum inconveniente.

Isso pode parecer uma pergunta obscura; Eu tenho feito muita pesquisa sobre isso. Existe uma abordagem melhor? Os requisitos não permitirão que o arquivo seja salvo, como um arquivo .xlxs, etc.

    
por Oliver Williams 18.08.2017 / 03:06

1 resposta

0

Correndo o risco de parecer derrotista, eu procuraria uma solução alternativa. Aqui está o porquê:

O problema mais assustador é A value of 0.04088100 will become 4.08E-2 porque o Excel está alterando esse valor ; se você salvar o arquivo, perderá a precisão e o último, no entanto, muitos dígitos serão definidos como 0. Eu tenho isso rotineiramente tentando corresponder números longos de 20 ou 30 dígitos que o Excel recusa.

Além disso, a inserção de caracteres invisíveis só causará dores de cabeça quando as pessoas tropeçarem nelas; se alguém excluir acidentalmente o personagem invisível, ele não poderá inserir novamente os zeros à esquerda e não saberá o motivo. Isso também será um problema se essas linhas forem importadas em algum lugar; embora você saiba como o Notepad & O Excel reagirá, e se esses forem caracteres de controle em outro aplicativo?

Melhor da sorte.

    
por 18.08.2017 / 07:34