1

Вот сделка. Мы приближаемся к пределам, я думаю о том, что вы можете сделать с 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 и т.д.

1 ответ1

0

Рискуя казаться пораженцем, я бы искал альтернативное решение. Вот почему:

Самая страшная проблема - A value of 0.04088100 will become 4.08E-2 потому что Excel изменяет это значение ; если вы сохраните файл, вы потеряете точность, и последние, однако, многие цифры будут установлены в 0. Я обычно пытаюсь сопоставить 20- или 30-значные длинные числа, с которыми сталкивается Excel.

Кроме того, вставка невидимых символов вызывает головную боль только тогда, когда люди спотыкаются о них; если кто-то случайно удалит невидимого персонажа, он не сможет повторно ввести ведущие нули и не будет знать почему. Это также будет проблемой, если эти строки когда-нибудь будут импортированы; хотя вы знаете, как отреагируют Notepad & Excel, что если это контрольные символы в другом приложении?

Удачи.

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