Существуют ли разные форматы файла Excel/XLSX и какой из них самый маленький?

Существуют ли разные форматы файла Excel/XLSX и какой из них самый маленький?

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

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

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

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

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

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

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

Можно ли транслировать файл XLSX? НЕТ!

Причина: файл XLSX на самом деле является сжатым файлом с двумя ключевыми файлами внутри, один из которых называется sharedStrings.xml, который является списком всех УНИКАЛЬНЫХ значений ячеек, а другой — списком ячеек, но с числовой ссылкой на первый файл sharedStrings.xml. Вся папка сжата, и вот, это ваш файл XLSX. Поэтому файл XLSX должен бытьпостроенный, не транслируется.

решение1

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

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

Пример:

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

Результат:

Результат в Excel

решение2

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

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

Во-вторых, добавьте "'" перед проблемными числами, что преобразует их в текст. Опять же...

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

Четвертый Изменить формат на текстовый и изменить кодировку всей книги на ASCII или что-то подобное простое. Подробнее здесьhttps://help.surveygizmo.com/help/кодировать-файл-Excel-в-utf-8-или-utf-16(при необходимости я добавлю здесь больше информации)

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

Связанный контент