Excel и CSV
Маленькая техническая заметка. Не пользуйтесь CSV в надежде, что он откроется в
Экселе. Если ваши потребители – люди с Экселем (а таких большинство), нужно
генерить .xlsx
, а не .csv
.
Дело в том, что Эксель писали в Микрософте. Может быть, сегодняшний MS уже обрел какую-то человечность. Но Эксель отсчитывает возраст с 1985 года – прямо как я – и старше многих читателей этой заметки. Поэтому ни о какой человечности говорить не приходится.
Эксель никогда не откроет CSV без ошибок. Он обязательно промажет с разделителем: если в файле запятая, он ищет точку с запятой и наоборот. Для обхода придумали грубый костыль: в первой строке может быть выражение sep=, и тогда Эксель возьмет запятую. Но этот заголовок ломает парсеры CSV, которые ни о каком Экселе не слышали.
Разделитель по умолчанию может зависеть от локали. У француза откроется, а у австрийца не откроется.
Эксель по-прежнему игнорирует UTF8. Немецкие умляуты становятся кракозябрами. Махинации с меткой BOM ни к чему не приводят.
В Экселе есть мастер импорта из CSV, но можно подумать, людям больше нечем заняться, как импортировать что-то куда-то ради таблички.
В общем, нужно напрячь булки и выкинуть CSV, и вместо этого генерить нормальный Эксель.
Если вдруг у вас Джава или Кложа, берите fastexcel и fastexcel-reader – они быстрее и компилируются Граалем. Все, что основано на Apache POI, тормозное и не компилируется Граалем. Я эту дорогу прошел и вот делюсь с вами.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter