Вот сделка. Мы приближаемся к пределам, я думаю о том, что вы можете сделать с CSV, но мне интересно, есть ли у кого-нибудь решение.
У нас есть CSV-файл размером 357 МБ. Скачивание нормально, и с хорошим соединением не займет много времени.
Однако большинство клиентов открывают этот файл в Excel. И есть несколько проблем:
- Поле
00400
будет отображаться как40
(ведущие нули удалены) - Значение 0.04088100 станет 4.08E-2 (или что-то подобное)
- Даты и время меняются
Исправление BAD: мы пытались добавить символ =
перед "0040"
- он работает для небольших файлов, но не для больших файлов - Excel не может рассматривать их как формулы, слишком много памяти и файл никогда не открывается
ХОРОШЕЕ исправление: мы добавили ASCII-символ 28 (File Stop
или FS
, см. Http://www.theasciicode.com.ar/extended-ascii-code/uppercase-slashed-zero-empty-set-ascii-code- 157.html) Все поля с этим "скрытым" значением отображаются правильно, за исключением того, что они выровнены по левому краю (поскольку обрабатываются в тексте)
ЕДИНСТВЕННАЯ проблема: К сожалению, у хорошего исправления есть одна проблема. Когда вы используете форматирование для выравнивания по правому краю полей с CHR(28) слева, справа появляется небольшой пробел, который вы не можете удалить, поскольку вместо него удаляется правый символ.
ВОЗМОЖНОЕ исправление: мы провели некоторые эксперименты и обнаружили, что добавление CHR(157) слева от значений полей, злоупотребляющих Excel, также остановило его, И выровняло по правому краю. Тем не менее, я чувствую себя очень странно, делая это, и задаюсь вопросом, есть ли какие-либо недостатки.
Это может показаться неясным вопросом; Я сделал много поисков по этому вопросу. Есть ли лучший подход? Требования не позволят сохранить файл как файл .xlxs и т.д.