Então, inicialmente tentamos permitir que o usuário baixasse arquivos CSV através do navegador, o que funcionou bem (alguns arquivos têm cerca de 375 MB). No entanto, parece que o cliente não aceitará isso por causa de a) formatação de números, b) remoção de zeros à esquerda ec) alteração de números longos como um código de estado de 157839481905
to 1.58E10
.
Se você já usou o Excel, está bastante familiarizado com estes "Achei que você queriaesse"comportamentos..
Portanto, precisaremos transmitir um arquivo Excel, mas existem formatos diferentes? (Suponha que o usuário tenha acesso à versão mais recente do Excel para esta questão)
Acredito que o Excel pode abrir um arquivo XML especificado corretamente como uma planilha, que pode conter as instruções adequadas para "formatar como texto", mas em arquivos grandes que podem realmente ficar fora de controle. Existe um formato Excel mais nativo e mais enxuto? Sem tanta marcação? Se você está ciente disso, onde está descrito?
--EDITAR--
Pensei em ajudar a comunidade com o que descobri. Primeiro, tentamos usar ="0040"
, ou seja, um igual antes das aspas. Funciona, mas tem muito tamanho em um arquivo grande, e o Excel enlouquece e trava.
Tentamos um caractere especial entre aspas antes, funcionou, mas a formatação foi um problema.
Você pode transmitir um arquivo XLSX? NÃO!
Motivo: um arquivo XLSX é na verdade um arquivo compactado com dois arquivos-chave dentro, um chamado sharedStrings.xml que é uma lista de todos os valores de células UNIQUE e outro que é uma lista de células, mas com uma referência numérica ao primeiro sharedStrings.xml arquivo. A pasta inteira está compactada e eis que esse é o seu arquivo XLSX. Portanto, um arquivo XLSX deve serconstruído, não transmitido.
Responder1
Não é realmente uma resposta à sua pergunta, mas sim à causa do seu problema.
Se quiser evitar o encurtamento dos seus números no Excel ao abrir um arquivo csv, você pode usar ="0123456789"
em vez de 0123456789
, como se fosse uma fórmula.
Exemplo:
Name,Value,Value as text
Small int,01234,="01234"
Long int,0123456789,="0123456789"
Very long int,01234567890123456789,="01234567890123456789"
Resultado:
Responder2
Vejo poucas opções, mas não tenho certeza se funcionará (aliás, não tenho experiência com xml):
A primeira coisa que você descartou é formatar como texto toda a planilha. Ok, o arquivo seria muito grande.
Em segundo lugar, adicione "'" na frente dos números problemáticos, o que os converte em texto. De novo...
Terceiro: O "novo" xlsx deve ser muito bom para diminuir o tamanho do arquivo, muito melhor que o formato xls.
Quarto Altere o formato para texto e altere a codificação de toda a pasta de trabalho para ASCII ou algo igualmente simples. Mais informações aquihttps://help.surveygizmo.com/help/encode-an-excel-file-to-utf-8-or-utf-16(se necessário adicionarei mais informações aqui)
Não tenho certeza, mas como a última coisa, eu tentaria converter para csv e depois alterar a codificação para ASCII ou codificação menor.