Entonces, al principio intentamos permitir que el usuario descargara archivos CSV a través de su navegador, lo cual funcionó bien (algunos archivos pesan alrededor de 375 MB). Sin embargo, parece que el cliente no aceptará eso debido a a) el formato de los números, b) la eliminación de los ceros iniciales yc) el cambio de números largos como un código de estado de 157839481905
to 1.58E10
.
Si ha utilizado Excel, estará bastante familiarizado con estos mensajes "Pensé que queríaeste"comportamientos..
Entonces necesitaremos transmitir un archivo de Excel, pero ¿existen diferentes formatos? (Supongamos que el usuario tiene acceso a la última versión de Excel para esta pregunta)
Creo que Excel puede abrir un archivo XML correctamente especificado como una hoja de cálculo, que podría contener las instrucciones adecuadas para "formatearlo como texto", pero en archivos grandes eso realmente podría salirse de control. ¿Existe un formato de Excel más nativo que sea más sencillo? ¿Sin tanto margen de beneficio? Si lo sabe, ¿dónde se describe?
--EDITAR--
Pensé en ayudar a la comunidad con lo que encontré. Primero, intentamos usar ="0040"
, es decir, un igual antes de las comillas. Funciona, pero tiene demasiado tamaño en un archivo grande y Excel se asusta y falla.
Probamos un carácter especial entre comillas antes, funcionó pero el formato fue un problema.
¿Puedes TRANSMITIR un archivo XLSX? ¡NO!
Motivo: un archivo XLSX es en realidad un archivo comprimido con dos archivos clave en su interior, uno llamado SharedStrings.xml que es una lista de todos los valores de celda ÚNICOS y otro que es una lista de celdas pero con una referencia numérica al primer SharedStrings.xml. archivo. Toda la carpeta está comprimida y, he aquí, ese es tu archivo XLSX. Entonces un archivo XLSX debe serconstruido, no transmitido.
Respuesta1
En realidad, no es una respuesta a su pregunta, sino a la causa de su problema.
Si quieres evitar el acortamiento de tus números en Excel al abrir un archivo csv, puedes utilizar ="0123456789"
en lugar de 0123456789
, como si fuera una fórmula.
Ejemplo:
Name,Value,Value as text
Small int,01234,="01234"
Long int,0123456789,="0123456789"
Very long int,01234567890123456789,="01234567890123456789"
Resultado:
Respuesta2
Veo algunas opciones, pero no estoy seguro de si funcionará (por cierto, no tengo experiencia con xml):
Lo primero que ha descartado es formatear como texto toda la hoja de cálculo. Ok, el archivo sería demasiado grande.
En segundo lugar, agregue "'" delante de los números problemáticos, lo que los convierte en texto. De nuevo...
Tercero: el "nuevo" xlsx debería ser bastante bueno para reducir el tamaño del archivo, mucho mejor que el formato xls.
Cuarto Cambie el formato a texto y cambie la codificación de todo el libro a ASCII o algo similar simple. Más información aquíhttps://help.surveygizmo.com/help/encode-an-excel-file-to-utf-8-or-utf-16(si es necesario agregaré más información aquí)
No estoy seguro, pero como último, intentaría convertir a csv y luego cambiar la codificación a ASCII o una codificación más pequeña.