3

Я экспортирую данные списка просмотра в CSV-файл. Есть столбец «Контактный номер». Тип данных этого столбца составляет 20 полей размера текста в доступе MS. Открыв этот CSV с помощью блокнота, он показывает фактическое значение данных, 12345678901234567890. Но открывая его в MS Excel, он показывает 12345678901234500000.:O

Почему последние 5 символов заменены на все ноль? В Excel я переформатирую этот столбец в формат категории «Пользовательский» или «Числовой». После этого он показывает 12345678901234500000. Если не переформатировать, обычно это показывает 1.23457E+19.

7 ответов7

4

Одно из предложений - поставить апостроф перед числом при экспорте данных в формат CSV. Таким образом, вместо 12345678901234567890 экспорт '12345678901234567890 .

3

Excel обрабатывает данные как число с плавающей запятой, которое может быть приблизительно равно 1.23457E+19.

Плавающая точка не дает 20 цифр точности.

Это ограничение с плавающей точкой. Смотрите эту страницу

3

Во-первых, вы не хотите рассматривать это как число, потому что 0123 станет 123, что является совершенно другим номером телефона. Заключение значений в двойные кавычки при экспорте должно быть достаточным, чтобы Excel воспринимал столбец как текст.

В прошлом я заметил, что Excel обеспечивает очень небольшой контроль над процессом импорта CSV, поэтому в зависимости от ваших требований вы можете рассмотреть возможность использования VBA для большего контроля над импортом или последующей обработки CSV, или использования Open Office.

2

Если вы откроете файл CSV из окна проводника (дважды щелкнув по файлу), Excel попытается автоматически определить поля для вас.

Если вы откроете Excel, то откройте файл CSV, у вас есть возможность самостоятельно выбрать разделители и типы полей. Это позволит вам установить «Контактный номер» в качестве текста, и он будет импортирован правильно.

1

Просто используйте "=0123" в файле CSV, включая кавычки. Помните, что повторное сохранение этого файла в качестве другого CSV отменит часть =" ... " .

Существует также способ HTML, если вы хотите использовать простую таблицу в качестве электронной таблицы, которая, вероятно, сохранит свое состояние при повторном сохранении, только если она больше не CSV:

<TD style="mso-number-format:@;">0123</TD>

Не используйте трюк с одинарными кавычками (') для решения проблемы импорта, поскольку он применим только при редактировании полей, когда вы уже находитесь в Excel. Иными словами, если вы попытаетесь импортировать CSV-файл с полем '0123, вы также получите настоящую одинарную кавычку в своем строковом поле.

1

Из моих экспериментов Excel автоматически определит формат поля CSV, если вы не укажете его как

="Data Here"

20,       5.5%,      "0404 123 351", "3-6",  ="123"
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

Однако я не уверен, как MS Access будет интерпретировать вышеупомянутые поля.

1

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

Это всего лишь попытка помочь вам понять, почему. Это означает, что он будет рассматриваться как строка в Access, что вас сейчас беспокоит. Лучший способ увидеть разницу и, возможно, понять, что говорится, - это отформатировать несколько разных ячеек в листе Excel.

Формат один как общий формат, один как число и один как текст. (Формат> Ячейки> Категория номеров) Затем введите 20-значный номер, например 99999999999999999999. Сохраните файл в формате CSV и откройте его в блокноте, чтобы увидеть разницу. Предшествующая запись с «просто говорит о превосходстве формата ячейки по-другому.

Вы упоминаете экспорт данных списка в CSV, поэтому вы должны контролировать данные списка, которые хотите сохранить как текст, а не как цифры. Доступ не будет иметь проблем с этим когда-либо, если вы не попытаетесь использовать значения в качестве чисел, но они, кажется, используются в качестве идентифицирующих чисел, а не значений.

Каков источник данных списка? Работа с форматом ячейки до ввода данных на ваш лист должна решить вашу проблему.

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