Перейти к содержимому

Инструменты для таблиц, которые правильно понимают типы данных

Девять инструментов, чтобы переносить таблицы между Excel, CSV, JSON, XML, PDF и OpenDocument. Три из них, которым нужна полноценная программа для работы с таблицами, отправляют файл на наш сервер, а он удаляет его, как только скачивание готово.

9 инструментов, без регистрации и водяных знаков

Если система требует CSV, начните с «Excel в CSV»; если CSV открывается в Excel одним искажённым столбцом — «CSV в Excel»; если данные нужны в коде — «CSV в JSON» или «JSON в CSV». Старые файлы .xls и книги OpenDocument обрабатывают «XLS в XLSX», «ODS в XLSX» и «XLSX в ODS» с сохранением форматирования и диаграмм, а «PDF в Excel» достаёт таблицу из отчёта, исходник которого вам так и не прислали. В заметках ниже — о том, что стоит почти за каждой проблемой с конвертацией таблиц: о разнице между тем, что ячейка хранит, и тем, что она показывает.

Excel и CSV

2 инструмента

Переносите данные между книгами Excel, CSV-файлами и PDF.

Что на самом деле хранит ячейка

В ячейке таблицы хранятся две отдельные вещи: значение и числовой формат. Значение 0.15 может отображаться как 15%, 0.15, £0.15 или 15.00%, и ни один из этих вариантов не меняет само значение ни на йоту. Это самый полезный факт о таблицах, и именно поэтому «Excel в CSV» предлагает выбрать между «Как отображаются в Excel» и «Исходные числа, даты ISO», а не угадывает. Первый вариант записывает ровно тот текст, что на экране, — 15/03/2024, 1,234.50, 12%: так делает «Сохранить как» в самом Excel, и этого ждёт человек, читающий CSV. Второй записывает простые числа и даты ISO — этого ждёт база данных или скрипт. Выберите не тот вариант, и импорт сломается так, будто данные повреждены.

Даты — это числа, которые притворяются датами. В ячейке с датой хранится порядковый номер дня, а точка отсчёта зависит от файла: книги из Excel для Windows считают от 1900 года, книги из старого Excel для Mac — от 1904-го, и между ними 1462 дня. Система 1900 года ещё и странная: она считает, что 29 февраля 1900 года существовало, — ошибка, унаследованная от Lotus 1-2-3 и сохранённая с тех пор ради совместимости. Здешние инструменты читают флаг точки отсчёта в каждой книге и воспроизводят этот несуществующий високосный день ровно там, где он должен быть, поэтому конвертированная здесь дата совпадает с тем, что показывает Excel, а не сдвигается на четыре года и один день.

Формула и её результат хранятся рядом. Книга содержит текст формулы и последнее вычисленное значение. При конвертации из книги в книгу — «ODS в XLSX», «XLS в XLSX», «XLSX в ODS» — переносятся сами формулы, переведённые между двумя наборами функций, поэтому лист по-прежнему пересчитывается при правке; те немногие функции, что есть только с одной стороны, показывают #NAME?, пока вы их не замените. Всё, что покидает мир таблиц, — CSV, JSON, XML — получает только вычисленный результат, потому что ни в одном из этих форматов нет понятия формулы.

CSV не может передать большую часть книги, и притворяться, что может, — значит терять данные. В нём нет листов, поэтому каждый лист становится отдельным файлом (а если нужны все — ZIP-архивом). В нём нет типов ячеек, поэтому каждое поле — текст, пока кто-то не попробует угадать тип. В нём нет форматов, формул, диаграмм, изображений, цветов и ширины столбцов. Объединённые ячейки приходится так или иначе разрешать: значение в первой ячейке или повтор во всём диапазоне. И CSV не записывает ни свой разделитель, ни десятичный знак, ни кодировку — поэтому европейский файл с точкой с запятой и запятыми в дробях попадает в американском Excel в один столбец, а текст с диакритикой превращается в кракозябры, если файл не начинается с метки порядка байтов (BOM).

Настоящий вред наносит текст, похожий на число. Открывая CSV, Excel угадывает тип для каждой ячейки отдельно: почтовый индекс 01234 теряет ноль, 16-значный номер заказа превращается в 1.23457E+15 без возможности восстановления, а название гена SEPT2 становится датой — проблема настолько серьёзная, что генетики переименовали свои гены. «CSV в Excel» решает один раз для каждого столбца, по всем его значениям, и конвертирует, только если с этим согласен весь столбец; всё, что начинается с нулей, и любое целое число, слишком длинное, чтобы число JavaScript хранило его точно, остаётся текстом. «JSON в CSV» так же бережно работает в обратную сторону и копирует 64-битные идентификаторы цифра в цифру там, где большинство конвертеров их округляет.

JSON и XML тоже теряют кое-что своё. В JSON вообще нет типа «дата», поэтому даты передаются текстом, и принимающий код должен знать, что перед ним. XML с данными несёт только значения — без форматирования, диаграмм и изображений: именно это и нужно для импорта, но не то, что вам нужно, если смысл был в том, чтобы сохранить книгу целиком.

Когда браузер действительно не подходит

Семь из этих инструментов никуда не отправляют ваш файл: «Excel в CSV», «CSV в Excel», «CSV в JSON», «JSON в CSV», «XML в Excel», «Excel в XML» и «PDF в Excel». Ничего не сохраняется — а это важно, когда в файле зарплатная ведомость или список клиентов. Четыре работают иначе: «Excel в PDF», «ODS в XLSX», «XLS в XLSX» и «XLSX в ODS» передают файл на наш сервер, потому что сверстать печатную страницу или перенести между форматами шрифты, цвета, условное форматирование и диаграммы веб-страница по-настоящему не может. Эти файлы передаются по зашифрованному соединению, конвертируются и удаляются, как только скачивание готово. Если сервер недоступен, каждый из них переключается на собственный конвертер, который сохраняет значения, формулы, числовые форматы, объединённые ячейки и ширину столбцов, но не шрифты, цвета и диаграммы, — и сообщает вам об этом.

Размер. Инструменты, работающие в браузере, держат всю таблицу в памяти, так что предел — объём памяти вашей вкладки: десятки мегабайт — без проблем, больше сотни — тяжело, многогигабайтная выгрузка — безнадёжно. Конвертеры книг принимают до 50 MB на файл, а «Excel в PDF» — до 40 MB, и оба сообщают об этом до конвертации, а не после. Лист Excel сам по себе заканчивается на 1 048 576 строках — это ограничение формата, а не наше; «CSV в Excel» продолжает на дополнительных листах с повтором заголовка, а не обрезает ваши данные молча.

Настоящая работа с данными. Конвертер — не база данных. Объединить две таблицы, убрать дубликаты, агрегировать, отфильтровать десять миллионов строк или разобрать грязную выгрузку — задачи для инструментов, созданных для этого, и бесплатные из них очень хороши: csvkit для быстрой правки CSV в командной строке, Miller — то же самое для JSON и CSV вместе, qsv — для скорости на огромных файлах, DuckDB — чтобы выполнять настоящий SQL прямо над файлом CSV или Parquet, pandas — если вы уже работаете в Python.

Макросы и всё исполняемое. VBA нельзя перенести в .xlsx — там для него просто нет места, — и в .ods он тоже не переносится, потому что LibreOffice выполняет лишь часть VBA, и различия проявились бы как неверные числа, а не как ошибки. Если книга зависит от макросов, храните оригинал рядом с конвертированной копией. С защищённых паролем файлов пароль нужно сначала снять в программе, которая его установила.

Автоматизация. Эти инструменты работают, когда человек нажимает кнопку. Конвертация ночной выгрузки — работа для командной строки: LibreOffice в режиме headless справляется со всеми форматами с этой страницы.

Как выбрать между похожими инструментами

Excel в CSV или Excel в XML. Оба читают книгу и записывают плоский файл данных, а выбор определяет место назначения. CSV — для таблиц, баз данных и всего, что просит «загрузите CSV». XML — для импорта и интеграций с заданными именами элементов: вы задаёте имена корня и строки, заголовки становятся именами элементов, а значения выводятся простыми числами и датами ISO. «Excel в XML» умеет также записывать XML Spreadsheet 2003 — а это совсем другое: формат, который Excel снова открывает как книгу, на случай, когда система просит «Excel XML», а не ваш собственный XML с данными.

CSV в Excel или CSV в JSON. Тот же парсер, то же определение типов по столбцам, разный результат. «CSV в Excel» создаёт .xlsx с настоящими датами и числами, которые можно суммировать и сортировать, и закреплённой строкой заголовков с фильтрами — для людей. «CSV в JSON» создаёт массив объектов, массив массивов, объект с ключами или JSON Lines — для кода. Если нужно и то и другое, конвертируйте в Excel для людей и в JSON для конвейера данных: результаты совпадут, потому что типы столбцов определялись одинаково.

XML в Excel или Excel в XML. Это не просто противоположные направления. «XML в Excel» сначала должен найти таблицу: он ищет элементы, повторяющиеся под одним родителем, — каждый <book> в каталоге, каждый <item> в RSS-ленте, — оценивает каждую группу и оставляет остальные в одном клике, а затем разворачивает атрибуты и вложенные элементы в столбцы, названные по пути. «Excel в XML» ничего искать не нужно: ваши строки уже и есть записи.

XLS в XLSX или CSV в Excel. Оба дают на выходе современную книгу. «XLS в XLSX» обновляет настоящий двоичный файл Excel 97–2003 и сохраняет всё, что в нём есть, — листы, формулы, форматирование, диаграммы. «CSV в Excel» строит книгу из простого текста, в котором ничего этого никогда не было. Пересекаются они в неприятном промежуточном случае: многие веб-сервисы выгружают HTML-таблицу или XML-файл и называют его .xls. «XLS в XLSX» распознаёт, чем такие файлы являются на самом деле, и сохраняет настоящую книгу.

PDF в Excel или Excel в PDF. Противоположные направления, и надёжно только одно из них. «Excel в PDF» — задача вёрстки: книга уже знает свою область печати, разрывы страниц и форматирование, и конвертер их отрисовывает. «PDF в Excel» — трудное направление, потому что PDF записывает, где был нарисован каждый символ, и ничего не знает о том, к какой ячейке он относился, — столбцы восстанавливаются по положению. Он хорошо работает с чистыми таблицами с линиями сетки, требует доработки там, где ячейки объединены или текст переносится на несколько строк, воссоздаёт значения, но не форматирование и не формулы, и помещает каждую страницу PDF на отдельный лист. Если исходная книга ещё существует, попросите её.

«ODS в XLSX» или «Excel в CSV» для файла .ods. «Excel в CSV» спокойно открывает .ods и отдаёт значения. «ODS в XLSX» сохраняет книгу книгой — с формулами, форматированием и диаграммами. Используйте конвертер, когда кому-то нужно работать в файле, и путь через CSV, когда системе нужны из него числа.

На чём построены эти инструменты

Движки с открытым исходным кодом, которые выполняют основную работу, и спецификации, которые они реализуют.

  • SheetJSApache-2.0 — читает и записывает все форматы книг, которые здесь есть.
  • LibreOffice CalcMPL-2.0 — берёт на себя конвертации, с которыми не справляется браузер, — когда доступен.
  • RFC 4180Specification — самое близкое к стандарту, что есть у CSV; объясняет, почему файлы не совпадают.

Частые вопросы

Мои таблицы где-нибудь сохраняются?

Только не в «Excel в CSV», «CSV в Excel», «CSV в JSON», «JSON в CSV», «XML в Excel», «Excel в XML» и «PDF в Excel»: они читают файл и записывают результат внутри этой вкладки, и ничего никуда не отправляется. «Excel в PDF» и три конвертера книг отправляют файл на наш сервер по зашифрованному соединению, потому что им нужна настоящая программа для работы с таблицами, чтобы сверстать страницу или перенести форматирование и диаграммы; файл конвертируется и сразу удаляется, ничего не сохраняется, не записывается в журналы и никому не передаётся.

Почему Excel портит мой CSV, когда я просто открываю его двойным щелчком?

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

Почему вместо букв с диакритикой появляются странные символы?

CSV не записывает собственную кодировку, поэтому Excel использует старую региональную кодовую страницу вашего компьютера, если файл не начинается с метки порядка байтов. Выберите «UTF-8 с BOM» в «Excel в CSV» — и диакритика, кириллица, арабский, китайский и эмодзи откроются правильно. Обычный UTF-8 без метки — правильный выбор для баз данных и кода, которым она не нужна.

Что происходит с моими формулами?

Из книги в книгу они переносятся как формулы и продолжают считать; функция, которая есть только с одной стороны, показывает #NAME?, пока вы её не замените. При выводе в CSV, JSON или XML записывается только вычисленный результат, потому что в этих форматах формуле негде находиться. В обратном направлении ячейка, начинающаяся с =, записывается как текст, а не как рабочая формула, поэтому вредоносный CSV не может ничего выполнить при открытии книги.

Есть ли ограничение на размер файла или в день?

Ни аккаунта, ни квот, ни дневного лимита. Инструменты в браузере ограничены памятью вашего устройства; конвертеры книг принимают файлы до 50 MB, а «Excel в PDF» — до 40 MB, и оба прямо сообщают, если ваш файл больше.

Будет ли водяной знак или ограничение по строкам?

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

Другие категории инструментов

Инструменты для PDFКонвертация, редактирование, оптимизация и защита PDF-документов.Инструменты для изображенийКонвертация, сжатие, оптимизация и редактирование изображений.Инструменты для документовКонвертация офисных документов и электронных книг и работа с ними.Инструменты для переводаПеревод файлов Word и Excel с сохранением оформления.Инструменты для видеоКонвертация, сжатие и редактирование видеофайлов.Инструменты для аудиоКонвертация, обрезка, объединение и настройка громкости аудиофайлов.Инструменты OCRИзвлечение текста и данных из изображений и документов.Инструменты для архивовОткрывайте файлы ZIP, RAR, 7z и TAR и создавайте свои — ничего не сохраняется.Инструменты для разработчиковФорматирование, проверка и повседневные утилиты для разработчиков.Инструменты для текстаПовседневные инструменты для редактирования, сравнения и подсчёта текста.