Файл CSV может правильно содержать 00123, а электронная таблица после открытия покажет 123. Файл хранит текстовые поля, а то, как их интерпретировать, решает приложение, которое их импортирует. Сохраняйте идентификаторы как текст при импорте и проверяйте сохранённый результат, прежде чем заменять оригинал.
Идентификатор не обязательно число
Арифметику применяют к величинам, например к количеству или цене. Почтовый индекс, ключ каталога или идентификатор счёта нужно трактовать по их смыслу: их цифры могут быть метками, а не величиной, которую можно складывать. Ведущие нули, длинные цифровые строки и коды, похожие на даты, могут быть испорчены нежелательным преобразованием.
Руководство Microsoft по ведущим нулям и большим числам объясняет, как импортировать нужные столбцы как текст. Там же описаны параметры управления автоматическим преобразованием в поддерживаемых версиях Excel. Проверьте свою версию: одни и те же настройки доступны не во всех редакциях.
Оригинальный вымышленный пример CSV
Это выдуманные записи для обучения, а не реальные данные счетов или клиентов. Скачать пример CSV.
item_id,reference,label,quantity
00123,12345678901234567890,JAN1,7
00007,98765432109876543210,1E10,12
| Столбец | Предполагаемый смысл | Тип при импорте |
|---|---|---|
| item_id | Идентификатор из пяти символов | Текст; сохранить 00123 и 00007 |
| reference | Длинная строка-ссылка | Текст; сохранить каждую цифру |
| label | Код, а не дата и не экспонента | Текст; сохранить JAN1 и 1E10 буквально |
| quantity | Количество | Целое число после проверки |
CSV не несёт такую таблицу типов столбцов как схему, обязательную для всех. Такая таблица в инструкциях при передаче файла может помочь избежать другой интерпретации в другом приложении.
Импортируйте в Excel осознанно
- Сохраните неизменённую копию исходного CSV.
- Используйте процедуру импорта текста/CSV в приложении, а не полагайтесь на автоматические догадки при двойном щелчке.
- Посмотрите предварительный просмотр и задайте для столбцов, похожих на идентификаторы, тип «текст» до применения преобразования. В рабочем процессе с запросами проверьте или замените любой шаг автоматического изменения типа, если нужно.
- Проверьте разделитель, кодировку и обработку значений, похожих на даты.
- Загрузите данные и сравните точные идентификаторы с исходными.
- После экспорта откройте полученный CSV в текстовом редакторе и снова импортируйте его с нужными типами столбцов.
Инструкции Microsoft по импорту и экспорту текстовых файлов описывают разницу между открытием и импортом. Названия пунктов меню зависят от платформы и версии. Пользовательский формат отображения из пяти нулей может показать 123 как 00123, но это не то же самое, что сохранить исходный текстовый идентификатор или восстановить уже потерянные цифры.
Проверяем строки на Python
В документации Python по модулю csv описано, что поля по умолчанию читаются как строки, с отдельными исключениями для параметров преобразования. Эта небольшая проверка использует только стандартную библиотеку:
import csv
with open("identifier-example.csv", newline="", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
assert rows[0]["item_id"] == "00123"
assert rows[0]["reference"] == "12345678901234567890"
assert rows[1]["label"] == "1E10"
quantities = [int(row["quantity"]) for row in rows]
assert sum(quantities) == 19
Проверки намеренно преобразуют только столбец quantity. Они показывают содержимое примера файла, а не гарантируют поведение произвольного экспорта или приложения для работы с таблицами.
Что нельзя восстановить автоматически
Если длинный идентификатор уже округлён и сохранён поверх оригинала, смена формата ячейки на текстовый не восстановит потерянные цифры. Восстановите данные из неизменённого источника. Если 123 может означать и 00123, и 123, дополнение нулями — это решение по бизнес-правилам, а не доказательство исходного значения.
Заключение поля CSV в кавычки — это синтаксис для сохранения разделителей и других символов; он не заставляет электронную таблицу во всех случаях считать поле текстом. В полезной инструкции при передаче файла указывают кодировку, разделитель, предполагаемые типы столбцов и правила проверки. О близкой проблеме при обмене документами см. доступность шрифтов Word и переносимость документов.
