Existem formatos diferentes para um arquivo Excel / XLSX e qual é o menor?

2

Então, primeiro tentamos permitir que o usuário baixasse arquivos CSV através de seu navegador, o que funcionou bem (alguns arquivos têm cerca de 375MB). No entanto, parece que o cliente não aceitará isso por causa de a) formatação de números, b) removendo zeros à esquerda ec) alterando números longos como um código de estado de 157839481905 para 1.58E10 .

Se você já usou o excel, está familiarizado com esses comportamentos "Eu pensei que você queria este ".

Então, precisaremos transmitir um arquivo do Excel, mas existem formatos diferentes? (Suponha que o usuário tenha acesso à versão mais recente do Excel para essa pergunta)

Acredito que o Excel possa abrir um arquivo XML corretamente especificado como uma planilha, que poderia conter as instruções de "formatar isso como texto", mas em arquivos grandes que poderiam ficar fora de controle. Existe um formato mais nativo do excel que é mais enxuto? Sem tanta marcação? Se você está ciente disso, onde está descrito?

- EDITAR -

Eu pensei em ajudar a comunidade a descobrir o que eu encontrei. Primeiro, tentamos usar ="0040" , ou seja, um igual antes das aspas. Funciona, mas tem tamanho demais em um arquivo grande, e o Excel enlouquece e falha.

Nós tentamos um caractere especial dentro das aspas antes, mas a formatação era um problema.

Você pode STREAM um arquivo XLSX? NÃO!

Razão: um arquivo XLSX é na verdade um arquivo compactado com dois arquivos de chaves, um chamado sharedStrings.xml que é uma lista de todos os valores de célula UNIQUE e outro que é uma lista de células, mas com uma referência de número ao primeiro. arquivo sharedStrings.xml. A pasta inteira é compactada e, eis que esse é o seu arquivo XLSX. Portanto, um arquivo XLSX deve ser construído , não transmitido.

    
por Oliver Williams 30.08.2017 / 03:19

2 respostas

2

Não é realmente uma resposta à sua pergunta, mas também à causa do seu problema.

Se você quiser evitar o encurtamento de seus números no Excel ao abrir um arquivo csv, poderá 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:

    
por 30.08.2017 / 18:17
0

Eu vejo poucas opções, mas não tenho certeza se isso funcionará (btw, eu não tenho experiência com xml):

A primeira coisa que você descartou é formatar como uma folha de texto inteira. Ok, o arquivo seria muito grande.

Segundo, adicione "'" na frente dos números problemáticos, o que os converte em texto. Mais uma vez ...

Terceiro: O "novo" xlsx deve ser muito bom em 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 similarmente simples. Mais informações aqui link (se necessário, eu irá adicionar mais informações aqui)

Não tenho certeza, mas como última coisa que eu tentaria converter em csv e, em seguida, alterar a codificação para ASCII ou codificação menor.

    
por 30.08.2017 / 18:53