Перейти к содержанию
Lesson Loom
Меню
Все материалы

Как открыть CSV и сохранить ведущие нули

Импортируйте таблицу в LibreOffice Calc, сохранив идентификаторы, кириллицу и поля с запятыми.

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

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

Подготовьте образец с неудобными значениями

Сохраните этот текст в новый файл registration-demo.csv с кодировкой UTF‑8. Указывайте именно расширение CSV при сохранении в текстовом редакторе.

id,name,city,lessons
00027,Мария,"Тула, центр",3
00102,Артём,Тверь,7
00005,Ирина,Пермь,12

Нужны значения, на которых заметны ошибки. Первый столбец содержит ведущие нули. В одном городе есть запятая внутри кавычек. Имена содержат кириллицу, а количества должны складываться как числа. Ожидаемый результат известен заранее. Три строки данных, четыре столбца, город целиком в одной ячейке, первый код 00027, сумма занятий равна 22.

Не правьте исходный файл в табличном редакторе, пока не поняли, что он изменил. Если столбцы не сошлись, закройте неудачный импорт и откройте CSV снова. Сохранение поверх источника может закрепить ошибку, которую ещё можно было исправить настройками чтения.

Проверьте разделитель и кодировку

Откройте файл в LibreOffice Calc и дождитесь окна импорта текста. Если приложение предлагает выбрать кодировку, укажите UTF‑8 для этого примера. Оцените предпросмотр. Если вместо кириллицы видны непонятные знаки, проверьте кодировку до дальнейших настроек. В рабочем CSV она может отличаться, поэтому лучше свериться с экспортировавшей программой или с известной текстовой строкой.

Выберите запятую как разделитель столбцов, а двойную кавычку как ограничитель текста. В предпросмотре Тула, центр должна занимать одну ячейку. RFC 4180 описывает распространённый формат CSV с разделителем-запятой и кавычками вокруг полей, содержащих запятые и некоторые другие символы. На практике программы часто выгружают данные с точкой с запятой или табуляцией. В таком случае ориентируйтесь на содержимое конкретного файла и параметры выгрузки. Расширение не гарантирует один набор настроек.

Посмотрите начало и конец предпросмотра. Заголовок должен иметь столько же столбцов, сколько обычная строка данных. Если только одна строка разошлась по столбцам, проблема может быть в кавычках конкретного поля. Не пытайтесь вылечить одну строку сменой разделителя для всей таблицы. Сохраните пример строки и разберитесь, правильно ли её сформировал экспорт.

Задайте типы до загрузки таблицы

Выделите столбец id в области предпросмотра и установите тип «Текст». Название пункта может отличаться в зависимости от языка интерфейса. В справке LibreOffice эта настройка находится в разделе Fields, где можно выбрать тип столбца. Оставьте lessons числовым при импорте. Идентификатор хранится как запись, с которой не выполняют арифметику. Число занятий, наоборот, участвует в вычислениях.

Этот шаг пригодится для почтовых индексов, артикулов, длинных номеров и некоторых значений, похожих на даты. Если приложение уже превратило 00027 в число 27, простое форматирование ячейки как текста не восстановит исходную строку. Иногда можно показать число с заданным количеством разрядов, но тогда это лишь отображение. Надёжнее повторить импорт и сохранить точное значение из CSV.

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

Примите результат и сохраните рабочую копию

После импорта проверьте первую и последнюю строки. Сравните не только вид значения, но и то, что показывает строка ввода для первого кода. Затем вычислите сумму lessons в отдельной ячейке. Для тестовых строк должно получиться 22. Проверьте, что у города осталась запятая и не появились пустые соседние поля.

Сохраните рабочий файл под новым именем в формате таблицы, который сохраняет типы столбцов, например ODS. Если нужно вернуть данные в CSV, сделайте отдельный экспорт и откройте его текстовым редактором. Проверьте, что исходные нули записаны в самом файле, а поля с запятыми заключены в кавычки. Получатель может использовать другой разделитель, поэтому запишите параметры обмена рядом с выгрузкой.

Упражнение готово, когда вы можете повторно открыть сохранённую таблицу, найти код 00027 без потери нулей и получить корректную сумму. Зафиксируйте выбранные параметры. Следующий экспорт от той же системы будет проще проверить на нескольких контрольных строках.

Для большой таблицы добавьте контроль с середины списка. Убедитесь, что число колонок совпадает у строки с пустым полем и у строки с длинным комментарием. Если описание содержит перенос внутри кавычек, проверьте, что оно осталось одной ячейкой. Так вы проверите граничные случаи, которые не видны на простых записях.

Источники