Яка справжня різниця між CSV Excel від стандартного CSV?
Наприклад, обробляючи стовпці з розривами рядків всередині однієї комірки, як вони кодують її по-різному?
Яка справжня різниця між CSV Excel від стандартного CSV?
Наприклад, обробляючи стовпці з розривами рядків всередині однієї комірки, як вони кодують її по-різному?
Відповіді:
Це абсолютно залежить від того, що ви визначаєте як "стандартний" CSV. Що стосується мене, Excel дотримується правил, викладених у RFC 4180 , "Загальний формат та тип MIME для файлів CSV".
Розглянемо таблицю, де перша клітинка в першому рядку має два розриви рядків. У Excel це виглядатиме так:
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | col1, line1a | | |
| | col1, line1b | | |
| | col1, line1c | col2, row1 | col3, row1 |
| 2 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
Тепер, як би Excel експортував це? Подивимось - текстовий редактор відобразив би це:
"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"
Не дуже витончений. Він вставляє повернення каретки (шестигранну 0D
) там, де в нашій комірці був розрив лінії. Кожна клітина оточена подвійними лапками. Також фактичні рядки відокремлюються зворотним перевезенням.
Щоб правильно розібратися в цьому, потрібно було б зробити аналізатор CSV
Якщо цього не зробило, то ви отримаєте щось подібне, як це - зауважте, що тепер чотири рядки замість двох, оскільки не вдалося ігнорувати розриви рядків.
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | "col1, line1a | | |
| 2 | col1, line1b | | |
| 3 | col1, line1c" | col2, row1 | col3, row1 |
| 4 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
Але давайте подивимось, що говорить RFC, можливо, Excel зробив це правильно?
Поля, що містять розриви рядків (CRLF), подвійні лапки та коми повинні бути укладені у подвійні лапки.
Акуратно, саме так зробив Excel. Підводячи підсумок, Excel, схоже, дотримується рекомендацій "стандартного" CSV-файлу. Враховуючи правильний аналізатор CSV, він повинен мати можливість також читати файли CSV Excel.
Моє розуміння з оригінальної реалізації CSV полягало в тому, що всі текстові поля укладені в лапки і цифри не повинні бути. Excel цього не робить, і якщо ви спробуєте завантажити свої файли CSV, створені Excel, на платформи, що не є мікрософт, вони виходять з ладу. Це стандартний підхід для мікрософт, ігноруйте сумісність і зосереджуйтесь на сліпому дотриманні правил. Подібне сталося з IE, вони правильно дотримувались правил html / css щодо атрибутів padding та margin та ігнорували той факт, що кожна існуюча веб-сторінка та веб-браузер трактували їх по-різному. У результаті майже кожна веб-сторінка має спеціальні правила для IE. Я вважаю, що файли CSV, вироблені програмою excel, є непотрібними, і використовую стовпець "об'єднати" функції, щоб вручну створити їх самостійно.