CSV
Самый простой табличный формат: строки таблицы - строки текста, колонки разделены знаком. Вся его сложность в том, что этот знак и кодировка у всех разные.
Разделитель
В англоязычном мире это запятая, в русскоязычном - чаще точка с запятой, потому что запятая занята дробной частью числа. Файл с точкой с запятой, открытый как «через запятую», покажет одну колонку на всю таблицу, и наоборот.
Кодировка
Если вместо русских букв в ячейках вопросы или знакомая абракадабра, файл сохранён в одной кодировке, а прочитан в другой. Надёжный путь - UTF-8; часть табличных процессоров опознаёт её только при наличии служебной метки в начале файла, поэтому в списке форматов сохранения и встречается отдельный пункт «UTF-8 с BOM».
Кавычки и переносы
Если внутри ячейки есть разделитель, кавычка или перенос строки, ячейку берут в двойные кавычки, а кавычку внутри удваивают. Это единственное правило CSV, которое действительно стоит помнить: из-за него один неэкранированный символ сдвигает всю таблицу на колонку вправо.
Числа, даты и ведущие нули
CSV не хранит типов, поэтому тип угадывает программа при открытии - и часто угадывает не так. Классика: код 007 превращается в 7, длинный артикул - в экспоненциальную запись, а дата «05.11» - в текущий год. Лечится указанием текстового типа колонки при импорте, а не после него.
Во что переводят
- В XLSX - когда нужны формулы, несколько листов и оформление.
- В JSON - когда таблицу читает программа, а не человек.
Обратный перевод из XLSX в CSV всегда теряет формулы, оформление и все листы кроме одного: в файле остаются только значения.