Если вы делаете это вручную, загрузите LibreOffice и используйте LibreOffice Calc для импорта CSV. Он намного лучше справляется с подобными вещами, чем любая другая версия Excel, которую я пробовал, и может сохранять в XLS или XLSX по мере необходимости, если вам потребуется впоследствии перейти в Excel.
Но если вы застряли в Excel и нуждаетесь в лучшем исправлении, похоже, есть выход. Кажется, это зависит от локали (что, на мой взгляд, идиотское). У меня нет Excel 2007, но у меня есть Excel 2010, и приведенный пример:
ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."
не работает. Я написал это в Блокноте и выбрал Сохранить как ..., а рядом с кнопкой Сохранить вы можете выбрать кодировку. Я выбрал UTF-8, как было предложено, но безуспешно. Однако смена запятых на точки с запятой сработала. Я ничего не изменил, и это просто сработало. Поэтому я изменил пример, чтобы он выглядел следующим образом, и выбрал кодировку UTF-8 при сохранении в Блокноте:
ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."
Но есть загвоздка! Единственный способ это работает, если дважды щелкнуть файл CSV, чтобы открыть его в Excel. Если я попытаюсь импортировать данные из текста и выбрал этот CSV, то он все равно не сработает на новых строках в кавычках.
Но есть еще один улов! Разделитель рабочего поля (запятая в исходном примере, точка с запятой в моем случае), по-видимому, зависит от региональных настроек системы (установленных в Панели управления -> Регион и язык). В Норвегии запятая является десятичным разделителем. Excel, похоже, избегает этого символа и предпочитает точку с запятой. У меня есть доступ к другому компьютеру с английской локализацией в Великобритании, и на этом компьютере первый пример с разделителем запятых работает нормально (только при двойном щелчке), а тот, где точка с запятой, фактически не работает! Так много для совместимости. Если вы хотите опубликовать этот CSV в Интернете, и у пользователей может быть Excel, я думаю, вам нужно опубликовать обе версии и предложить людям проверить, какой файл дает правильное количество строк.
Итак, все детали, которые я смог собрать, чтобы заставить это работать:
- Файл должен быть сохранен как UTF-8 с спецификацией, что делает Блокнот, когда вы выбираете UTF-8. Я пробовал UTF-8 без спецификации (можно легко переключать в Notepad ++), но затем дважды щелкнуть документ не удается.
- Вы должны использовать разделитель запятой или точки с запятой, но не тот, который является десятичным разделителем в ваших региональных настройках. Возможно, другие персонажи работают, но я не знаю, какие именно.
- Вы должны заключать в кавычки поля, содержащие новую строку с символом ".
- Я использовал окончания строк Windows (\ r \ n) как в текстовом поле, так и в качестве разделителя записей, который работает.
- Необходимо дважды щелкнуть файл, чтобы открыть его, импорт данных из текста не работает.
Надеюсь, это кому-нибудь поможет.