Excel открывает csv с ошибкой

Проф-Диалог

Новый, полностью переработанный курс А. М. Князева «Диагностика личностно-профессиональных компетенций». Первые два занятия бесплатно!

Иероглифы при открытии .csv файла с помощью Excel: решение проблемы

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

Проблема возникает потому, что кодировка csv файла отличается от той, которая используется MS Excel по умолчанию. В этой статье мы рассмотрим два варианта быстрого решения этой проблемы.

Вариант №1. В самом Excel

Шаг 1. Откройте MS Excel.

Шаг 2. Перейдите во вкладку «Данные».

Шаг 3. Нажмите «Получить данные», затем из файла, затем «Из текстового/CSV файла».

Шаг 4. В открывшемся окне в правом нижнем углу выберите опцию «Все файлы».

Шаг 5. Найдите в этом окне .csv файл, который нужно исправить. Нажмите «Импорт».

Шаг 6. В открывшемся окне нажмите «Загрузить».

Шаг 7. Готово! Создан новый лист, и данные в нем отображаются корректно.

Вариант №2. С помощью Google Таблиц (Google Sheets)

Шаг 1. Убедитесь, что вы авторизованы в своем аккаунте Google.

Шаг 3. В разделе «Создать таблицу» нажмите «Пустой файл».

Шаг 4. Откроется страница с пустой таблицей. Нажмите «Файл», затем «Импортировать».

Шаг 5. В открывшемся окне нажмите «Загрузка», затем «Выбрать файл на устройстве».

Шаг 6. Найдите в новом окне .csv файл, который нужно исправить. Нажмите «Открыть».

Шаг 7. Нажмите «Импортировать данные».

Шаг 8. Готово! Таблица импортирована, данные изображаются корректно.

Вы можете дальше работать с файлом прямо в Google Таблицах, либо экспортировать файл, чтобы работать с ним в другой программе (например, MS Excel).
Чтобы экспортировать файл, нажмите «Файл», затем «Скачать», затем выберите нужный формат (например Microsoft Excel).

CSV – популярное расширение файлов, которые используются, в основном, для обмена данными между различными компьютерными программами. Чаще всего необходимости в открытии и редактировании таких документов нет. Однако в некоторых случаях перед пользователями может встать такая задача. Программа Excel позволяет это сделать, но в отличие от стандартных файлов в формате XLS и XLSX, простое открытие документа двойным щелчком мыши не всегда дает качественный результат, что может выражаться в некорректном отображении информации. Давайте посмотрим, каким образом можно открыть файлы с расширением CSV в Экселе.

  • Открываем CSV-файлы

    • Метод 1: двойным щелчком или через контекстное меню

    • Метод 2: применяем Мастер текстов

    • Метод 3: через меню “Файл”

  • Заключение

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

CSV – аббревиатура, которая расшифровывается как “Comma-Separated Values” (на русском языке означает “значения, разделенные запятыми”).

Как следует из названия, в таких документах используются разделители:

  • запятая – в англоязычных версиях;
  • точка с запятой – в русскоязычных версиях программы.

Во время открытия документа в Excel основная задача (проблема) заключается в выборе способа кодировки, примененного при сохранении файла. Если будет выбрана не та кодировка, скорее всего, пользователь увидит множество нечитаемых символов, и полезность информации будет сведена к минимуму. Помимо этого, ключевое значение имеет используемый разделитель. Например, если документ был сохранен в англоязычной версии, а затем его пытаются открыть в русскоязычной, скорее всего, качество отображаемой информации пострадает. Причина, как мы ранее отметили, заключается в том, что в разных версиях используются разные разделители. Давайте посмотрим, как избежать этих проблем и как правильно открывать файлы CSV.

Прежде, чем приступить к более сложным методам, давайте рассмотрим самый простой. Он применим только в тех случаях, когда файл был создан/сохранен и открывается в одной и той же версии программы, а значит, проблем с кодировкой и разделителями быть не должно. Здесь возможно два варианта, опишем их ниже.

Excel установлена как программа по умолчанию для открытия CSV-файлов

Если это так, открыть документ можно как и любой другой файл – достаточно просто дважды щелкнуть по нему.

Открытие файла двойным щелчком мыши в Windows

Для открытия CSV-фалов назначена другая программа или не назначена вовсе

Алгоритм действия в таких ситуациях следующий (на примере Windows 10):

  1. Щелкаем правой кнопкой мыши по файлу и в открывшемся контекстном меню останавливаемся на команде “Открыть с помощью”.
  2. Во вспомогательном меню система может сразу предложить программу Excel. В этом случае кликаем по ней, в результате чего файл откроется (как и при двойном щелчке по нему). Если нужной нам программы нет в списке, кликаем по пункту “Выбрать другое приложение”.Выбор программы для открытия файла через контекстное меню в Windows
  3. Появится окно, в котором мы можем выбрать программу (чтобы раскрыть весь список доступных вариантов, требуется нажать кнопку “Еще приложения”), с помощью которой требуется открыть документ. Ищем то, что нам нужно и жмем OK. Чтобы назначить Excel приложением по умолчанию для данного типа файлов, предварительно ставим соответствующую галочку.Назначение Excel программой по умолчанию для файлов CSV
  4. В некоторых случаях, когда и в этом окошке не удается найти Эксель, щелкаем по кнопке “Найти другое приложение на этом компьютере” в конце списка.Просмотр других приложений для открытия файла CSV в Windows 10
  5. На экране отобразится окно, в котором мы переходим к расположению программы на ПК, отмечаем исполняемый файл с расширением EXE и жмем кнопку “Открыть”.Выбор Excel для открытия файла CSV в Windows 10

Независимо от того, какой из описанных выше способов был выбран, результатом будет открытие CSV-файла. Как мы упомянули выше, корректно отображаться содержимое будет только при соответствии кодировки и разделителей.

Открытый в Эксель файл в формате CSV

В остальных случаях может показываться нечто подобное:

Некорректное отображение содержимого файла CSV в Эксель

Поэтому описанный метод подходит не всегда, и мы переходим к следующим.

Метод 2: применяем Мастер текстов

Воспользуемся интегрированным в программу инструментом – Мастером текстов:

  1. Открыв программу и создав новый лист, чтобы получить доступ ко всем функциям и инструментам рабочей среды, переключаемся во вкладку “Данные”, где щелкаем по кнопке “Получение внешних данных”. Среди раскрывшихся вариантов выбираем “Из текста”.Запуск Мастера текста в Эксель
  2. Откроется окно, в котором нам нужно перейти к расположению файла, который требуется импортировать. Отметив его жмем кнопку “Импорт”.Выбор файла для импорта в Эксель
  3. Появится Мастер текстов. Проверяем, чтобы была выбрана опция “с разделителями” для параметра “Формат данных”. Выбор формата зависит от кодировки, которая была использована при его сохранении. Среди самых популярных форматов можно отметить “Кириллицу (DOS)” и “Юникод (UTF-8)”. Понять, что сделан правильный выбор можно, ориентируясь на предварительный просмотр содержимого в нижней части окна. В нашем случае подходит “Юникод (UTF-8)”. Остальные параметры чаще всего не требует настройки, поэтому жмем копку “Далее”.Мастер текстов в Экселе - шаг 1
  4. Следующим шагом определяемся с символом, который служит в качестве разделителя. Так как наш документ был создан/сохранен в русскоязычной версии программы, выбираем “точку с запятой”. Здесь у нас, как и в случае с выбором кодировки, есть возможность попробовать различные варианты, оценивая результат в области предпросмотра (можно, в том числе, указать свой собственный символ, выбрав опцию “другой”). Задав требуемые настройки снова нажимаем кнопку “Далее”.Мастер текстов в Экселе - шаг 2
  5. В последнем окне, чаще всего, вносить какие-либо изменения в стандартные настройки не нужно. Но если требуется изменить формат какого-то столбца, сначала кликаем по нему в нижней части окна (поле “Образец”), после чего выбираем подходящий вариант. По готовности жмем “Готово”.Мастер текстов в Экселе - шаг 3
  6. Появится окошко, в котором выбираем способ импорта данных (на имеющемся или на новом листе) и жмем OK.
  7. Все готово, нам удалось импортировать данные CSV-файла. В отличие от первого метода, мы можем заметить, что была соблюдена ширина столбцов с учетом содержимого ячеек.Результат импорта содержимого файла CSV в Эксель

И последний метод, которым можно воспользоваться заключается в следующем:

  1. Запустив программу выбираем пункт “Отрыть”.Открытие документа в ЭксельЕсли программа уже ранее была открыта и ведется работа на определенном листе,  переходим в меню “Файл”.Переход в меню Файл в ЭксельЩелкаем по команде “Открыть” в списк команд.Открытие файла в Excel
  2. Жмем кнопку “Обзор”, чтобы перейти к окну Проводника.Переход к выбору файла для открытия в Excel
  3. Выбираем формат “Все файлы”, переходим к месту хранения нашего документа, отмечаем его и щелкаем кнопку “Открыть”.Выбор файла для открытия в Excel
  4. На экране появится уже знакомый нам Мастер импорта текстов. Далее руководствуемся шагами, описанными в Методе 2.Мастер текстов в Excel - шаг 1

Заключение

Таким образом, несмотря на кажущуюся сложность, программа Эксель вполне позволяет открывать и работать с файлами в формате CSV. Главное – определиться с методом реализации. Если при обычном открытии документа (двойным щелчком мыши или через контекстное меню) его содержимое содержит непонятные символы, можно воспользоваться Мастером текста, который позволяет выбрать подходящую кодировку и знак разделителя, что напрямую влияет на корректность отображаемой информации.

Время на прочтение
11 мин

Количество просмотров 368K

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

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Начнем с того, что форматом CSV на самом деле называют три разных текстовых формата, отличающихся символами-разделителями: собственно сам CSV (comma-separated values — значения, разделенные запятыми), TSV (tab-separated values — значения, разделенные табуляциями) и SCSV (semicolon separated values — значения, разделенные точкой с запятой). В жизни все три могут называться одним CSV, символ-разделитель в лучшем случае выбирается при экспорте или импорте, а чаще его просто «зашивают» внутрь кода. Это создает массу проблем в попытке разобраться.

Как иллюстрацию возьмем казалось бы тривиальную задачу: импортировать в Microsoft Outlook данные из таблицы в Microsoft Excel.

В Microsoft Excel есть средства экспорта в CSV, а в Microsoft Outlook — соответствующие средства импорта. Что могло быть проще — сделал файлик, «скормил» почтовой программе и — дело сделано? Как бы не так.

Создадим в Excel тестовую табличку:

Текстовая табличка

… и попробуем экспортировать ее в три текстовых формата:

«Текст Unicode» Кодировка — UTF-16, разделители — табуляция, переводы строк — 0×0D, 0×0A, объем файла — 222 байт
«CSV (разделители — запятые)» Кодировка — Windows-1251, разделители — точка с запятой (не запятая!), во второй строке значение телефонов не взято в кавычки, несмотря на запятую, зато взято в кавычки значение «01;02», что правильно. Переводы строк — 0×0D, 0×0A. Объем файла — 110 байт
«Текстовые файлы (с разделителями табуляции)» Кодировка — Windows-1251, разделители — табуляция, переводы строк — 0×0D, 0×0A. Значение «01;02» помещено в кавычки (без особой нужды). Объем файла — 110 байт

Какой вывод мы делаем из этого?.. То, что здесь Microsoft называет «CSV (разделители — запятые)», на самом деле является форматом с разделителями «точка с запятой». Формат у Microsoft — строго Windows-1251. Поэтому, если у вас в Excel есть Unicode-символы, они на выходе в CSV отобразятся в вопросительные знаки. Также то, что переводами строк является всегда пара символов, то, что Microsoft тупо берет в кавычки все, где видит точку с запятой. Также то, что если у вас нет Unicode-символов вообще, то можно сэкономить на объеме файла. Также то, что Unicode поддерживается только UTF-16, а не UTF-8, что было бы сильно логичнее.

Теперь посмотрим, как на это смотрит Outlook. Попробуем импортировать эти файлы из него, указав такие же источники данных. Outlook 2007: Файл -> Импорт и экспорт… -> Импорт из другой программы или файла. Далее выбираем формат данных: «Значения, разделенные запятыми (Windows)» и «Значения, разделенные табуляцией (Windows)».

«Значения, разделенные табуляцией(Windows)» Скармливаем аутлуку файл tsv, с разделенными табуляцией значениями и!.. — чтобы вы думали?.. Outlook склеивает поля и табуляцию не замечает. Заменяем в файле табуляцию на запятые и, как видим, поля уже разбирает, молодец.
«Значения, разделенные запятыми (Windows)» А вот аутлук как раз понимает все верно. Comma — это запятая. Поэтому ожидает в качестве разделителя запятую. А у нас после экселя — точка с запятой. В итоге аутлук распознает все неверно.

Два майкрософтовских продукта не понимают друг друга, у них напрочь отсутствует возможность передать через текстовый файл структурированные данные. Для того, чтобы все заработало, требуются «пляски с бубном» программиста.

Мы помним, что Microsoft Excel умеет работать с текстовыми файлами, импортировать данные из CSV, но в версии 2007 он делает это очень странно. Например, если просто открыть файл через меню, то он откроется без какого-либо распознавания формата, просто как текстовый файл, целиком помещенный в первую колонку. В случае, если сделать дабл-клик на CSV, Excel получает другую команду и импортирует CSV как надо, не задавая лишних вопросов. Третий вариант — вставка файла на текущий лист. В этом интерфейсе можно настраивать разделители, сразу же смотреть, что получилось. Но одно но: работает это плохо. Например, Excel при этом не понимает закавыченных переводов строк внутри полей.

Более того, одна и та же функция сохранения в CSV, вызванная через интерфейс и через макрос, работает по-разному. Вариант с макросом не смотрит в региональные настройки вообще.

Стандарта CSV как такового, к сожалению, нет, но, между тем, существует т.н. memo. Это RFC 4180

2005-го

года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.

Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:

  • между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
  • разделители — запятые, в конце строки не должно быть запятой,
  • в последней строке CRLF не обязателен,
  • первая строка может быть строкой заголовка (никак не помечается при этом)
  • пробелы, окружающие запятую-разделитель, игнорируются.
  • если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
  • т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
  • если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.

Вот в нотации ABNF описание формата:

 file = [header CRLF] record *(CRLF record) [CRLF]
   header = name *(COMMA name)
   record = field *(COMMA field)
   name = field
   field = (escaped / non-escaped)
   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
   non-escaped = *TEXTDATA
   COMMA = %x2C
   DQUOTE =  %x22
   LF = %x0A
   CRLF = CR LF
   TEXTDATA =  %x20-21 / %x23-2B / %x2D-7E
 

Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:

  • строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
  • количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
  • Квотить кавычки через «слэш» не по стандарту, делать так не надо.
  • Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
  • Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
  • Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
  • У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.

Пример валидного CSV, который можно использовать для тестов:

Фамилия, Имя, Адрес, Город/штат, индекс, просто строка
Иванов,Иван, Ленина 20, Москва, 08075, "1/3"
Tyler, John,110 terrace, PA,20121, "1.24"
"Петров 
""Кул""", Петя,120 Hambling St., NJ,08075, "1,24"
Смирнов,Вася,"7452 Street ""Near the Square"" road", York, 91234, "3-01"
,Миша,,Ленинград, 00123, "03-01"
"Джон ""Черная голова"", Клод",Рок,"", Маями бич,00111, "0000"
Сергей,,

точно такой же SCSV:

Фамилия; Имя; Адрес;  Город/штат; индекс; просто строка
Иванов;Иван; Ленина 20; Москва; 08075;"1/3"
Tyler; John;110 terrace; PA; 20121;"1.24"
"Петров 
""Кул"""; Петя;120 Hambling St.; NJ;08075;"1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road"; York; 91234;"3-01"
;Миша;;Ленинград; 00123;"03-01"
"Джон ""Черная голова""; Клод";Рок;""; Маями бич;00111; "0000"
Сергей;;

Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.

Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:

Ошибки Excel-я при импорте:

  1. Учлись пробелы, окружающие разделители
  2. Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
  3. В поле индекс Excel «опустил» ведущие нули.
  4. в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол

Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:

С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.

Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.

Фамилия;Имя;Адрес;Город/штат;индекс;просто строка
Иванов;Иван;Ленина 20;Москва;="08075";="1/3"
Tyler; John;110 terrace;PA;="20121";="1.24"
"Петров 
""Кул""";Петя;120 Hambling St.;NJ;="08075";="1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road";York;="91234";="3-01"
;Миша;;Ленинград;="00123";="03-01"
"Джон ""Черная голова"";Клод";Рок;"";Маями бич;="00111";="0000"
Сергей;;

И вот что случаеся, если мы открываем этот файлик в экселе:

Резюмирую.

Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:

  1. выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
  2. выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
  3. выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
  4. выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
  5. выбрать, выводить ли строку заголовка;
  6. выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и «, но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию …,»abc«»,… посчитает за ошибку;
  7. совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =»<значение поля>«.
  8. определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.

Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:

  1. разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
  2. предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
  3. предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
  4. предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
  5. предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
  6. определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.

Рауф Алиев,
заместитель технического директора Mail.Ru Group

let
    Source = Csv.Document(File.Contents("E:export_file_369116 (1).csv"),[Delimiter=";", Columns=8, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Replaced Value" = Table.ReplaceValue(#"Promoted Headers",".",",",Replacer.ReplaceText,{"CV_PRICE_1"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Replaced Value",{{"IE_XML_ID", Int64.Type}, {"IE_NAME", type text}, {"IE_PREVIEW_TEXT", type text}, {"IE_DETAIL_TEXT", type text}, {"IP_PROP61", type text}, {"CV_QUANTITY_FROM", type text}, {"CV_QUANTITY_TO", type text}, {"CV_PRICE_1", type number}})
in
    #"Changed Type"

Проблема:

Создаю простенькую табличку, в ячейке 1:1 которой находится значение «ID». Сохраняю как csv, закрываю, пытаюсь открыть. Excel сначала говорит что формат файла отличается от указываемого в расширении (что уже странно), после чего выдает сообщение «Ошибка чтения записи #n», а затем — «Приложению Microsoft Excel не удается преобразовать некоторые ячейки. Число обнаруженных ошибок: 1» и файл открывается пустым.

Причина:

Оказывается, если файл начинается с последовательности заглавных букв «ID», то Excel полагает, что формат этого файла SYLK, и, естественно, открыть его как SYLK у него не получается. Этот баг описан на саппорте MS и, судя по всему, является уже старым и исправлять его никто не собирается.

Решение:

Перед «ID» в ячейке 1:1 поставить, скажем, пробел. Тогда файл откроется нормально.

Понравилась статья? Поделить с друзьями:
  • Excel макрос если ошибка то
  • Excel как убрать все ошибки
  • Excel как пропустить все ошибки
  • Excel как проверить на ошибку
  • Excel как не отображать ошибки