2

Итак, сначала мы попытались разрешить пользователю загружать файлы CSV через браузер, который работал нормально (некоторые файлы занимают около 375 МБ). Однако, похоже, что клиент не примет это из-за а) форматирования чисел, б) удаления начальных нулей и в) изменения длинных чисел, таких как код состояния с 157839481905 до 1.58E10 .

Если вы использовали Excel, вы довольно хорошо знакомы с этими «я думал, что вы хотели это » поведения ..

Итак, нам нужно будет передать файл Excel, но есть ли другие форматы? (Предположим, что у пользователя есть доступ к последней версии Excel по этому вопросу)

Я считаю, что Excel может открыть правильно указанный файл XML в виде электронной таблицы, которая может содержать правильные инструкции "отформатировать это как текст", но для больших файлов, которые могут действительно выйти из-под контроля. Есть ли более оригинальный формат Excel, который является более компактным? Без так много разметки? Если вы знаете об этом, где это описано?

- РЕДАКТИРОВАТЬ -

Я думал, что помогу сообществу в том, что я нашел. Во-первых, мы попытались использовать ="0040" то есть равно перед кавычками. Работает, но слишком большой размер для большого файла, и Excel выходит из строя и вылетает.

Мы пробовали использовать специальный символ внутри кавычек, но это работало, но форматирование было проблемой.

Можете ли вы STREAM XLSX файл? НЕТ!

Причина: файл XLSX на самом деле является архивным файлом с двумя ключевыми файлами внутри, один из которых называется sharedStrings.xml, который представляет собой список всех значений ячеек UNIQUE, а другой - список ячеек, но с указанием номера на первый файл sharedStrings.xml. файл. Вся папка заархивирована, и вот, это ваш файл XLSX. Таким образом, файл XLSX должен быть собран, а не потоковым.

2 ответа2

2

Это не совсем ответ на ваш вопрос, но и причина вашей проблемы.

Если вы хотите избежать сокращения чисел в Excel при открытии файла CSV, вы можете использовать ="0123456789" вместо 0123456789 , как если бы это была формула.

Пример:

Name,Value,Value as text
Small int,01234,="01234"
Long int,0123456789,="0123456789"
Very long int,01234567890123456789,="01234567890123456789"

Результат:

Результат в Excel

0

Я вижу несколько вариантов, но я не уверен, что это будет работать (кстати, у меня нет опыта работы с XML):

Первое, что вы отклонили, - это отформатируйте весь текст в виде таблицы. Хорошо, файл будет слишком большим.

Во-вторых, добавьте «» перед трудными числами, которые преобразуют их в текст. Снова...

Третье: "новый" xlsx должен быть достаточно хорош при уменьшении размера файла, намного лучше, чем формат xls.

Четвертое. Измените формат на текст и измените кодировку всей рабочей книги на ASCII или что-то аналогичное простое. Более подробная информация здесь https://help.surveygizmo.com/help/encode-an-excel-file-to-utf-8-or-utf-16 (при необходимости я добавлю дополнительную информацию здесь)

Не уверен, но, как и в последнюю очередь, я бы попытался преобразовать в csv, а затем изменить кодировку на ASCII или меньшую кодировку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .