Содержание
- Сообщение об ошибке в Excel при попытке импорта данных из веб-источника: «Недопустимое объявление XML»
- Проблемы
- Причина
- Обходное решение
- Статус
- Дополнительная информация
- Excel ошибка при импорте
- Проблемы при использовании функции импорта и преобразования в разделе Преобразование & получить вкладки данные в Excel 2016
- Симптомы
- Язвы и грабли CSV и Excel: проблемы и решения
Сообщение об ошибке в Excel при попытке импорта данных из веб-источника: «Недопустимое объявление XML»
Проблемы
При попытке импорта данных из веб-источника в Microsoft Excel может появиться сообщение об ошибке, подобное следующему:
Не удается открыть файл, так как: недопустимое объявление XML.
За этим следуют строки, указывающие на расположение ошибки и версию XML-файла, предназначенную для языка наращиваемой.
Причина
Это происходит из-за того, что средству синтаксического анализа Excel XML требуется, чтобы знаки XML-тега XML были абсолютно первыми символами на XML-странице. Им не могут предшествовать другие символы, а также символы пробелов, которые обычно игнорируются интерпретатором XML. Примечание. Средство синтаксического анализа XML в Microsoft Excel 2000 не будет работать в этих требованиях.
Обходное решение
Чтобы устранить эту ошибку, убедитесь в том, что в документах, которые будут открываться в качестве источников веб-данных в Excel, не требуется ничего, чем тег XML.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».
Дополнительная информация
XML-документы с правильным форматом начинаются с объявления XML, которое определяет их как XML-документы и определяет используемую версию XML, как показано в следующем примере:
Браузеры и другие программы, которые интерпретируют XML, обычно игнорируют пробелы (пробел, табуляция или новая строка) в исходном документе, а некоторые средства синтаксического анализа XML игнорируют эти символы, если они происходят впереди объявления XML. Тем не менее, в случае синтаксического анализа XML, включенного в Excel, важно, чтобы ни один из этих знаков не предшествует объявлению XML. Средство синтаксического анализа XML, которое входит в состав Excel 2000, а также многие браузеры, не пропускует символы пробела перед объявлением XML. Таким образом, документы, которые могли открыться в этих средах в обычном режиме, создают сообщение об ошибке, описанное в разделе «симптомы» этой статьи при использовании веб-запросов в Excel.
Источник
Excel ошибка при импорте
ваш способ еще не пробовал — интересно попробую сегодня
вердикт по моему вопросу — какойто глюк в системе excel не при чем
что делал
раз 5 переустановил офис 2010 с предварительной полной чисткой реестра — не помогло
поставил 2013 — тоже самое
поставил 2003 — нет глюков .
берем дубль windows8 (у меня их 2 на компе на всяк случай)
ставим туда 2010 офис с того же инсталятора — все нормально
беда какаято но причина не в excel
Надстройка уважаемого EducatedFool не помогла — рисунки не вставляются также пишет «ошибка при импорте файла»
Извращенный способ который помог
1.Кликаем правой кнопкой мыши на файле рисунка — контексное меню — выбираем «Изменить»
2.После этого открываем файл рисунка любым графическим редактором — после открытия жмем на клавиатуре Ctrl+A (Выбрать всё)
3.Еще раз правой клавишей на рисунке — копировать
3.Заходим на открытый лист Excel — выбираем Вставить
4.Полчуда свершилось — картинка вставилась
5.Рано радоваться — способ работает в 2010 только при сохранении в формате .xls
6.При сохранении и последующем открытии в формате .xlsm на месте рисунка красный крест
7.Ну и ладно — все равно только .xls пользуюсь
Источник
Проблемы при использовании функции импорта и преобразования в разделе Преобразование & получить вкладки данные в Excel 2016
Симптомы
При использовании функции импорта и преобразования в разделе Получение и трансформировать в Microsoft Excel 2016 на вкладке данные , возможны следующие проблемы:
Редактор запросов некорректно работает на компьютерах с установленным Internet Explorer.
Предположим, что изменение запроса, ранее загруженный в таблицу и затем удалить столбец в редакторе запросов. После обновления запроса в конце таблицы создается пустой столбец.
При обновлении запроса, фокус перемещается на лист свою таблицу связанного запроса.
После импорта книги Excel, если таблица содержит пустые столбцы отображаются неправильные результаты.
При проверке многих таблиц в области навигатора Excel 2016 может аварийно завершить работу.
При выборе функции в разделе спарклайны быстрого анализа запроса таблиц, которые создаются путем преобразования & получить запросы произошла непредвиденная ошибка.
После выполнения операции вырезания и вставки в таблицу запроса, которая загружается с помощью запроса, запрос нельзя обновить с помощью области Запросы книги .
При попытке удалить источник данных для текущей книги произошла непредвиденная ошибка возникает, если книга защищена.
При записи макроса для создания запроса возникает ошибка компиляции.
После нескольких итераций повторяющиеся записи для создания запроса завершается ошибкой.
Источник
Язвы и грабли CSV и Excel: проблемы и решения
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 года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.
Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:
- между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
- разделители — запятые, в конце строки не должно быть запятой,
- в последней строке CRLF не обязателен,
- первая строка может быть строкой заголовка (никак не помечается при этом)
- пробелы, окружающие запятую-разделитель, игнорируются.
- если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
- т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
- если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.
Вот в нотации ABNF описание формата:
Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:
- строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
- количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
- Квотить кавычки через «слэш» не по стандарту, делать так не надо.
- Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
- Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
- Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
- У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.
Пример валидного CSV, который можно использовать для тестов:
точно такой же SCSV:
Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.
Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:
Ошибки Excel-я при импорте:
- Учлись пробелы, окружающие разделители
- Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
- В поле индекс Excel «опустил» ведущие нули.
- в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол
Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:
С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.
Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.
И вот что случаеся, если мы открываем этот файлик в экселе:
Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:
- выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
- выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
- выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
- выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
- выбрать, выводить ли строку заголовка;
- выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и », но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию . «abc«»,… посчитает за ошибку;
- совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =» «.
- определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.
Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:
- разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
- предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
- предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
- предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
- предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
- определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.
Источник
Если вы ранее создали карту XML,вы можете использовать ее для импорта данных XML в ячейки, которые соеряду, но существуют также несколько способов и команд импорта данных XML без карты XML.
При наличии карты XML сделайте следующее для импорта данных XML в сопоставленные ячейки:
-
В карте XML выберите одну из сопоставленных ячеек.
-
На вкладке Разработчик нажмите кнопку Импорт.
Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».
-
В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать, и нажмите кнопку Импорт.
-
Импорт файла данных XML в качестве XML-таблицы
-
Импорт нескольких файлов данных XML
-
Импорт нескольких файлов данных XML в качестве внешних данных
-
Открытие файла данных XML для импорта данных
Дополнительные сведения о проблемах см. в разделе Типичные проблемы при импорте данных XML в конце этой статьи.
Импорт файла данных XML в качестве XML-таблицы
-
На вкладке Разработчик нажмите кнопку Импорт.
Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».
-
В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать, и нажмите кнопку Импорт.
Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
В диалоговом окне Импорт данных выполните одно из следующих действий:
-
Выберите XML-таблицу на существующем компьютере, чтобы импортировать содержимое файла данных XML в XML-таблицу на вашем компьютере в указанной ячейке.
-
Чтобы импортировать содержимое файла в XML-таблицу на новом, начиная с ячейки A1, выберите XML-таблицу на новом. Карта файла данных XML отобразится в области задач Источник XML.
-
-
Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
Чтобы контролировать поведение данных XML (например, привязку данных, форматирование и макет), нажмите кнопку Свойства ,чтобы отобразить диалоговое окно Свойства карты XML. Например, при импорте данных по умолчанию существующие данные в диапазоне будут перезаписаны, но это можно изменить.
Импорт нескольких файлов данных XML
-
Выберите сопоставленную ячейку, чтобы импортировать несколько XML-файлов в один набор сопоставленных ячеек.
Если вы хотите импортировать несколько XML-файлов в несколько наборов сопоставленных ячеек, щелкните любую несопоставленную ячейку листа.
-
На вкладке Разработчик нажмите кнопку Импорт.
Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».
-
В диалоговом окне Импорт XML найдите и выберите файл данных XML (XML-файл), который вы хотите импортировать.
-
Если файлы являются смежными, нажмите клавишу SHIFT, а затем щелкните первый и последний файл в списке. Все данные из XML-файлов будут импортированы и добавлены в сопоставленные ячейки.
-
Если файлы не являются смежными, нажмите клавишу CTRL, а затем щелкните все файлы списка, которые вы хотите импортировать.
-
-
Нажмите кнопку Импорт.
Если вы выбрали несколько файлов, появится диалоговое окно Импорт <>.xml файл. Выберите карту XML, соответствующую импортируемому файлу данных XML.
Чтобы использовать одну карту для всех выделенных файлов, которые еще не были импортированы, установите флажок Использовать эту карту XML для всех выбранных файлов этой схемы.
Импорт нескольких файлов данных XML в качестве внешних данных
Если нужно импортировать несколько XML-файлов с одним пространством имен, но с разными схемами XML, вы можете воспользоваться командой Из импорта данных XML. Excel создаст уникальную карты XML для каждого импортируемого файла данных XML.
Примечание: При импорте нескольких XML-файлов, в которых не определено пространство имен, считается, что они используют одно пространство имен.
-
Если вы используете Excel с подпиской наMicrosoft 365, щелкните Данные > Получить данные > из файла > из XML.
Если вы используете Excel 2016 или более раннюю версию, на вкладке Данные нажмите кнопку Из других источников, а затем щелкните Из импорта данных XML.
-
Выберите диск, папку или расположение в Интернете, где находится файл данных XML (XML-файл), который вы хотите импортировать.
-
Выберите файл и нажмите кнопку Открыть.
-
В диалоговом окне Импорт данных выберите один из следующих параметров:
-
В XML-таблицу в существующей книге. Содержимое файла импортируется в новую таблицу XML на новом листе. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
Существующий таблица Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.
-
На новый лист. Excel добавляет в книгу новый лист и автоматически помещает данные XML в его левый верхний угол. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
-
Чтобы контролировать поведение данных XML, таких как привязка, форматирование и макет, нажмите кнопку Свойства ,чтобы отобразить диалоговое окно Свойства карты XML. Например, при импорте данных по умолчанию существующие данные в соеченом диапазоне перезаписываются, но это можно изменить.
Открытие файла данных XML для импорта данных
-
Выберите команду Файл > Открыть.
Если вы используете Excel 2007, нажмите Microsoft Office кнопку >открыть.
-
В диалоговом окне Открытие файла выберите диск, папку или веб-адрес, где расположен нужный файл.
-
Выберите файл и нажмите кнопку Открыть.
-
Если появится диалоговое окно Импорт XML, открытый файл ссылается на одну или несколько таблиц стилей XSLT, поэтому можно щелкнуть один из следующих параметров:
-
Открытие файла без применения таблицы стилей Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.
-
Открыть файл, применив следующую таблицу стилей (выберите одну). Выберите таблицу стилей, которую вы хотите применить, и нажмите кнопку ОК. Данные XML будут отформатированы в соответствии с выбранным листом стилей.
Примечание: Данные XML будут открыты в Excel в режиме «только для чтения», что позволяет предотвратить случайное сохранение первоначального исходного файла в формате книги Excel с поддержкой макросов (XLSM). В этом случае схема не создается и вы не можете использовать карту XML.
-
-
Если появится диалоговое окно Открыть XML, в XML-файле не будет ссылок на таблицу стилей XSLT. Чтобы открыть файл, выберите один из следующих параметров:
-
Щелкните XML-таблица для создания XML-таблицы в новой книге.
Содержимое файла импортируется в XML-таблицу. Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
Выберите в качестве книги, которая будет работать только для чтения.
Данные XML импортируется в двумерную таблицу со строками и столбцами, где теги XML показаны как заголовки столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанном расположении ячейки. Остальные теги отсортировали по алфавиту во второй строке. В этом случае схема не создается и вы не можете использовать карту XML.
Данные XML будут открыты в Excel в режиме «только для чтения», что позволяет предотвратить случайное сохранение первоначального исходного файла в формате книги Excel с поддержкой макросов (XLSM). В этом случае схема не создается и вы не можете использовать карту XML.
-
Щелкните Использовать область задач XML-источника.
Карта файла данных XML отобразится в области задач Источник XML. Для сопоставления элементов схемы с листом их можно перетащить на лист.
Если файл данных XML не ссылается ни на какую схему, Excel создает ее на основе этого файла.
-
Распространенные проблемы при импорте данных XML
Excel отображает диалоговое окно Ошибка импорта XML, если не может проверить данные в соответствии с картой XML. Чтобы получить дополнительные сведения об ошибке, нажмите кнопку Сведения в этом диалоговом окне. В следующей ниже таблице описаны ошибки, которые часто возникают при импорте данных.
Ошибка |
Объяснение |
Ошибка при проверке схемы |
Когда вы выбрали в диалоговом окне Свойства карты XML параметр Проверять данные на соответствие схеме при импорте и экспорте, данные были импортированы, но не проверены на соответствие указанной карте XML. |
Некоторые данные были импортированы как текст |
Часть импортированных данных или все данные были преобразованы из объявленного типа в текст. Чтобы использовать эти данные в вычислениях, необходимо преобразовать их в числа или даты. Например, значение даты, преобразованное в текст, не будет работать должным образом в функции ГОД, пока вы не преобразуйте его в тип данных «Дата». Excel преобразует данные в текст в следующих случаях:
|
Ошибка разбора XML |
Средству синтаксического анализа XML не удается открыть указанный XML-файл. Убедитесь, что в XML-файле отсутствуют синтаксические ошибки и XML построен правильно. |
Не удается найти карту XML, соответствующую этим данным |
Эта проблема может возникнуть в том случае, если для импорта выбрано несколько файлов данных XML и Excel не удается найти соответствующую карту XML для одного из них. Импортируйте схему для файла, указанного в строке заголовка этого диалогового окна, сначала следует, а затем повторно выполните импорт файла. |
Не удается изменить размер XML-таблицы для включения данных |
Вы пытаетесь добавить строки путем импорта или добавления данных в XML-таблицу, однако таблицу невозможно расширить. XML-таблицу можно дополнять только снизу. Например, сразу под XML-таблицей может находиться объект, такой как рисунок или даже другая таблица, который не позволяет расширить ее. Кроме того, возможно, что при расширении XML-таблицы будет превышен установленный в Excel предел по количеству строк (1 048 576). Чтобы исправить эту проблему, измените расположение таблиц и объектов на листе, чтобы XML-таблица могла дополняться снизу. |
Указанный XML-файл не ссылается на схему
XML-файл, который вы пытаетесь открыть, не ссылается на схему XML. Для работы с данными XML, содержащимися в файле, Excel требуется схема, основанная на его содержимом. Если такая схема неверна или не отвечает вашим требованиям, удалите ее из книги. Затем создайте файл схемы XML и измените файл данных XML так, чтобы он ссылался на схему. Дополнительные сведения см. в статье Сопоставление XML-элементов с ячейками карты XML.
Примечание: Схему, созданную Excel, невозможно экспортировать в качестве отдельного файла данных схемы XML (XSD-файла). Хотя существуют редакторы схем XML и другие способы создания файлов схемы XML, возможно, вы не имеете к ним доступа или не знаете, как ими пользоваться.
Выполните следующие действия, чтобы удалить из книги схему, созданную Excel:
-
На вкладке Разработчик выберите команду Источник.
Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».
-
В области задач Источник XML выберите пункт Карты XML.
-
В диалоговом окне Карты XML щелкните карту XML, созданную Excel ,и нажмите кнопку Удалить.
Возникают проблемы при импорте нескольких XML-файлов, которые используют одно пространство имен, но разные схемы
При работе с несколькими файлами данных XML и несколькими схемами XML стандартным подходом является создание карты XML для каждой схемы, сопоставление нужных элементов, а затем импорт каждого из файлов данных XML в соответствующую карту XML. При использовании команды Импорт для открытия нескольких XML-файлов с одним пространством имен можно использовать только одну схему XML. Если эта команда используется для импорта нескольких XML-файлов, использующих одно пространство имен при разных схемах, можно получить непредсказуемые результаты. Например, это может привести к тому, что данные будут перезаписаны или файлы перестанут открываться.
Если нужно импортировать несколько XML-файлов с одним пространством имен, но с разными схемами XML, вы можете воспользоваться командой Из импорта данных XML (выберите Данные > Из других источников). Эта команда позволяет импортировать несколько XML-файлов с одним пространством имен и разными схемами XML. Excel создаст уникальную карты XML для каждого импортируемого файла данных XML.
Примечание: При импорте нескольких XML-файлов, в которых не определено пространство имен, считается, что они используют одно пространство имен.
Отображение вкладки «Разработчик»
Если вкладка Разработчик недоступна, выполните следующие действия, чтобы открыть ее.
-
В Excel 2013 и Excel 2010
-
Выберите Файл > Параметры.
-
Щелкните категорию Настроить ленту.
-
В разделе Основные вкладки установите флажок Разработчик и нажмите кнопку ОК.
-
-
В Excel 2007
-
Нажмите кнопку Microsoft Office кнопку >Excel параметры.
-
Выберите категорию Основные.
-
В разделе Основные параметры работы с Excel установите флажок Показывать вкладку «Разработчик» на ленте и нажмите кнопку ОК.
-
См. также
Просмотр XML в Excel
Сопоставление XML-элементов с ячейками карты XML
Экспорт данных XML
Здравствуйте. Имеется доменная сеть организации, компьютеры с ОС MS Windows 10 1903. Установлен MS Office 2016 и MS Office 2019 Standard. Имеется постоянная необходимость пересылать выгруженные из стороннего ПО по электронной
почте .xml файлы. Почтовый клиент у всех по умолчанию — Outlook. Почтовый сервер — службы gmail.
Ситуация следующая: Пользователь получает файл .xml вложением в почтовый клиент. MS Office 2016. Открывает его из клиента, или сохраняет себе на компьютер, с последующей попыткой открыть в Excel, получает
сообщение вида: «Файл поврежден, поэтому его нельзя открыть»
По рекомендациям из Сети, отключаю в панели безопасности Excel параметры:
— Включить защищенный просмотр для файлов из Интернета,
— Включить защищенный просмотр для файлов в потенциально небезопасных расположениях
— Включить защищенный просмотр для вложений Outlook.
Ошибка меняется на следующую: При загрузке были обнаружены ошибки в следующих областях: Таблица. Этот файл нельзя открыть из-за наличия ошибок. Ошибки перечислены в файле: ХХХХ.log
В логе следующее:
ОШИБКА РАЗБОРА XML: Отсутствует завершающий тег Ошибка на уровне этого стека элементов или ниже: <ss:Workbook> <ss:Worksheet> <ss:Table> <ss:Row> <ss:Cell> <ss:Data> <ss:P5P>
А теперь самое интересное. Если файл скачать через web-интерфейс почты Google — он открывается корректно и без ошибок. Если файл приходит пользователю в .zip/.rar архиве, открывается из Outlook — корректно и без ошибок.
Я проводил сравнение параметров и содержимого файлов (через текстовый редактор) — они полностью совпадают. Атрибуты, безопасность, размер. Однако один файл, сохраненный через Outlook — не открывается, а скачанный через браузер — корректно
работает. Файлы идентичные. Из одних и тех же писем.
В MS Office 2019 — все открывается корректно, как через Outlook, так и при сохранении через браузер.
Пользователи — имеют права локальных администраторов.
Что делает с .xml файлом Outlook, что приводит к невозможности его открыть и как исправить эту проблему?
Все документы XML зависят от определения того, какие поля разрешены для существования и какие значения разрешены для существования в каждом из этих полей. Они определены в каждом XML файле путем ссылки на определение типа документа ( «DTD» ) или файл XML-схемы.
Я понимаю, что Excel 2007 и более поздние версии не поддерживают DTD. Вместо этого они ожидают, что ваш XML файл будет ссылаться на XML-схему.
Итак, ваша основная проблема заключается в том, что ваш XML файл ссылается на DTD файл, и вам нужно преобразовать ваш DTD файл в файл XML-схемы (вы можете проверить это, открыв документ с помощью программы, например Notepad ++, и посмотрите на необработанную текст.)
Есть много инструментов, которые помогут вам сделать это, но, честно говоря, я пытался заставить их всех работать в течение нескольких часов и до сих пор не имеет Excel, открывающего мой XML (пробежал этот пост googling тот же код ошибки.)
Если вы просто пытаетесь открыть XML файл в одно мгновение, вы, вероятно, не захотите вложить в него столько усилий, но если я выясню быстрое и простое решение, я приду обновление.
Если вам просто нужно открыть его, вы можете скачать бесплатную программу, которая преобразует XML в CSV:
http://xmltocsv.codeplex.com/
Я попробовал, и он отлично поработал — я сразу же открыла свой файл в Excel 2013. Проблема решена на данный момент.
Конечно, точка XML заключается в том, что данные могут относиться к другим данным с контекстом, и они теряются без надлежащей схемы или файла DTD. Но если вы просто хотите, чтобы файл был открыт, это должно работать на данный момент (для тех, у кого еще нет Excel 2003, хотя я думаю, что это так же легко для вас.)
Содержание:
1. XML – расширяемый язык разметки
2. Устранение Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
1. XML – расширяемый язык разметки
В данной статье речь пойдёт о причинах возникновения фатальной ошибки «Ошибка разбора XML» и способах устранения данной неполадки. Также будет дана инструкция не по устранению, но «обходу» ошибки, то есть действиям на опережение.
XML (с английского – extensible markup language – расширяемый язык разметки) – это язык разметки, который рекомендует Консорциум Всемирной паутины. Обычно язык разметки XML служит для описания документации, соответствующего типа, а также описывает действия соответствующих процессоров. Расширяемый язык разметки имеет довольно простой синтаксис, поэтому используется по всему миру, чтобы создавать и обрабатывать документацию программным способом. Он создавался именно для использования в Интернете. XML назвали именно расширяемым языком разметки, так как в нём нет фиксации разметки, которая содержится внутри документа, а именно: программист может создавать любую разметку, а ограничения будут встречаться лишь в синтаксисе.
2. Устранение Ошибки разбора XML в 1С
«Ошибка разбора XML» возникает исключительно в тонком клиенте 1С. Также стоит отметить, что «Ошибка разбора XML» также довольна схожа с ошибкой по формату потока, которая возникает в толстом клиенте. Обычно в 1С «Ошибка разбора XML» возникает по причине наличия кэша метаданных. И если очистить кэш, то ошибка будет устранена. Выглядит окно с ошибкой, а также окно с комментариями от технической поддержки следующим образом:
Рис. 1 Окно Ошибки разбора XML в 1С
XML данные читаются по потокам, так что в каждый из моментов времени объект «сосредоточен» в некотором узле XML. Из-за этого также может возникать фатальная ошибка «Ошибка разбора XML». Для того чтобы её устранить, можно вызвать функцию «ИсключениеЧтенияXml», как показано на скриншоте примера ниже:
Рис. 2 Вызов функции ИсключениеЧтенияXML для устранения Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
Данные два способа (очистка кэша метаданных и функция «ИсключениеЧтенияXml») – не все возможные варианты устранения ошибки разбора XML. Далее рассмотрим нестандартный подход, который позволит избежать ошибки еще до её возникновения.
Для наглядности будем работать в конфигурации 1С:Бухгалтерия предприятия, одной из наиболее распространенных программ фирмы 1С. У многих людей, которые пользуются программой 1С:Отчётность появляются неполадки при попытках открыть данные/файлы от налоговой. Чтобы открыть такой файл повторяем следующие действия:
· Переходим по пути: «Настройки 1С:Отчётности → Журнал обмена с контролирующими органами», как показано на скриншоте ниже:
Рис. 3 Настройка 1С Отчетности
· Далее кликаем на «Запросы» и выделяем ту выписку, которую не было возможности открыть из-за ошибки, как продемонстрировано на скриншоте ниже:
Рис. 4 Выбор выписки с Ошибкой разбора XML в 1С
· Обращаем внимание на стадию отправки, которая располагается внизу этого сообщения, и кликаем два раза на зелёный круг:
Рис. 5 Стадия отправки документа с Ошибкой разбора XML в 1С
· Появляется транспортное сообщение, в нём кликаем на «Выгрузить» и выбираем папку, куда необходимо провести выгрузку, после чего сохраняем данный файл. Пробуем открыть его, при помощи любого из графических редакторов, который может поддерживать формат PDF, как показано на скриншоте ниже:
Рис. 6 Результат обхода Ошибки разбора XML в 1С
· Всё успешно открылось, а ошибка даже не успела возникнуть.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Перейти к контенту
В виду неудобства просмотра данных в файле XML возникла задача открыть (или импортировать) файл XML в MS Excel. Благо то, что MS Excel поддерживает такие файлы и в нем встроен механизм импорта.
Однако при открытии файла XML в Excel появляется ошибка:
Если нажать на кнопку «Сведения…» выводятся подробности:
Код ошибки —2146697210, Не удается найти указанный объект:
Иногда после того, как нажимаешь «ОК» в окне на рис.1, MS Excel зависает и закрывается с ошибкой:
Решение (на примере MS Excel 2016 ):
Произвести импорт данных:
1. Открыть новый документ в Excel (Пустая книга)
2. Перейти на вкладку «Данные» — «Получение внешних данных» — «Из других источников» — «Из импорта данных XML«:
3. Далее выбираем импортируемый файл XML и нажимаем на кнопку «Открыть«.
4. Выбираем способ открытия «XML-таблица«:
5. В окне «Импорт данных» выставите значение «Новый лист«:
Нажмите «ОК«. После чего должна открыться таблица с набором данных из XML-файла.
Для того, чтобы открыть (импортировать) в Excel несколько файлов необходимо:
1. В Excel в меню «Файл» выбрать «Параметры«.
2. Перейти в раздел «Настроить ленту» и активировать вкладку «Разработчик«:
Нажмите кнопку «ОК«.
3. Нажмите на вкладку «Разработчик» — «Импорт» (в разделе XML):
4. Далее с помощью клавиш CTRL или SHIFT выберите несколько XML файлов и нажмите «Открыть».
Выбираю опцию «Получение внешних данных из интернета», по умолчанию в Excel при импорте сайты открывает IE. В итоге импортировать получается только страницу целиком и приходится вручную чистить лишнюю информацию т.е. нельзя стандартным образом выбирать отдельные таблицыобласти т.к. не появляются «жёлтые стрелочки» для выбора отдельных объектов страницы. Все обновления Windows 7Excel 2013 стоят. Не пойму в чём дело. Погуглил, толком ответов нигде нет. Эксперты Помогите, пожалуйста! |
|
SuperCat Пользователь Сообщений: 2737 |
Быть может, вручную через VBA парсить сайт? There is no knowledge that is not power |
Увы, VBA, я совсем не знаю во-первых. |
|
SuperCat Пользователь Сообщений: 2737 |
Если вы постоянно используйте одни и те же сайты, то есть смысл написать свой парсер. There is no knowledge that is not power |
Я ж говорю, не владею VBA… |
|
SuperCat Пользователь Сообщений: 2737 |
А пора There is no knowledge that is not power |
realalexandro Пользователь Сообщений: 22 |
#7 21.11.2016 20:14:45
Слушайте, я очень ценю, что для простого СТАНДАРТНОГО импорта данных, который УЖЕ ЗАШИТ в функционале эксель, Вы мне предлагаете писать парсер и изучать VBA, ПОСКОЛЬКУ ПРЯМОГО ОТВЕТА НА МОЙ ВОПРОС ОЧЕВИДНО НЕ ЗНАЕТЕ … ну так не знаете, хоть не отвечайте Уважаемые форумчане, может быть кто нибудь более простое решение знает?! |
||
Игорь Пользователь Сообщений: 3631 |
#8 21.11.2016 20:16:44 Ошибки ж ведь только в процессе настройки появляются, — да, неприятно, но это ж один раз надо ОК щелкнуть на всех этих сообщениях.
наличие желтых стрелок с вероятностью 95% не связано с появлением ошибок |
||
Кнопка цитирования не для ответа [МОДЕРАТОР] Ок, нажать не проблема, я бы не стал по этому поводу тему создавать и беспокоить людей |
|
Михаил С. Пользователь Сообщений: 10514 |
#10 21.11.2016 20:36:51
ваш сайт я не проверял, ибо у меня ошибки выскакивают минимум в 99%. Изменено: Михаил С. — 21.11.2016 20:38:57 |
||
Jungl Пользователь Сообщений: 830 |
#11 21.11.2016 20:38:31 realalexandro, vba можно и не знать, а вот с макрорекордером можете справится.
|
||
Забавно, мне ответил Игорь и я его попросил проверить, а теперь Вы мне отвечаете, что «мой сайт не проверяли», поскольку у Вас ошибки при импорте всегда или почти всегда. Правильно ли я понимаю тогда, что функционал импорта из Web работает в настоящее время только по принципу «Импортируй всю страницу, а потом руками удаляй не нужное», либо «пиши парсер под отдельный сайт»? Т.е. выходит, что текущий формат большинства сайтов по отдельным частямтаблицам встроенный импорт Excel как правило не понимает? Если это так, то это очень странно, потому что я даже в учебнике не таком старом нашёл вот такой пример, как раз для сайта на котором я пробую импорт: |
|
Игорь Пользователь Сообщений: 3631 |
#13 21.11.2016 20:54:18 У меня сайт http://cbr.ru/ импортируется (через веб-запрос) без ошибок
на это не смотрите. |
||
Jungl, спасибо за пример! «Воткнуть» его в макрос и запустить у меня ума хватило, хотя сам код понять мне пока сложновато. Может быть я неправильно объяснял, но на самом деле, через стандартный импорт выкачивается полностью вся та же информация т.е. вся главная страница в «цифрах и буквах», что и через Ваш скрипт, просто вначале выскакивает то самое сообщение об ошибке сценария. Я так понимаю через скрипт тоже сложно регулировать какую именно таблицу хотим «подгрузить» с сайта, поскольку, очевидно это зависит от структуры определённой и нужен парсер?! В общем вроде бы теперь я начинаю понимать, что проблема моя не в Экселе и не в Виндоусе, а в несовершенстве встроенного импорта, который понимает только «табличную» структуру, которой теперь мало кто пользуется, так ведь?! |
|
Игорь, спасибо большое! Значит Вы были правы! У меня по галочкам то же самое. И импорт то всей страницы проходит без проблем (именно всей, а не отдельных областей). Ну вобщем я понял, суть в том, что технология вёрстки сайтов теперь отличается от формата стандартного импорта эксель, поэтому отдельные области вычленить по импорту можно редко. Значит всё нормально, надо просто иметь это ввиду и уже дальше либо писать хитрые запросы через VBA либо ручками выковыривать то что надо из общего импорта… Если я правильно эту идею понял, тогда, конечно, и вопроса больше нет. |
|
Jungl Пользователь Сообщений: 830 |
#16 21.11.2016 21:18:27
я вам пишу, макрорекордером пользуйтесь(и по возможности сравнивайте код, может поймете немного сути импорта).
|
||||
Jungl, в смысле макрорекордером?! Второй вариант обязательно сравню уже непосредственно по изменениям кода, Вам спасибо! |
|
trakt123 Пользователь Сообщений: 7 |
Jungl
, Здравствуйте! |
Jungl Пользователь Сообщений: 830 |
trakt123, здравствуйте! |
trakt123 Пользователь Сообщений: 7 |
Jungl
, спасибо за оперативный ответ, только я не понял совсем, совсем нечего https://cryptowat.ch , хочу получить с него данные для мат. анализа, данные получаю «корявые», да и не всё нужно. Подскажите куда копать. |
Jungl Пользователь Сообщений: 830 |
#21 13.07.2017 14:54:51 trakt123, по хорошему, такие вещи нужно изучать, писать парсер. https://cryptowat.ch/docs/api . |
Время на прочтение
11 мин
Количество просмотров 366K
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,24.
- В поле индекс Excel «опустил» ведущие нули.
- в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол
Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:
С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать 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, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:
- выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
- выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
- выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
- выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
- выбрать, выводить ли строку заголовка;
- выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и «, но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию …,»abc«»,… посчитает за ошибку;
- совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =»<значение поля>«.
- определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.
Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:
- разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
- предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
- предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
- предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
- предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
- определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.
Рауф Алиев,
заместитель технического директора Mail.Ru Group
0 / 0 / 0 Регистрация: 01.07.2018 Сообщений: 15 |
|
1 |
|
Access Ошибка при импорте файлов эксель17.07.2019, 14:01. Показов 1137. Ответов 3
Уважаемые форумчане, Возникает ошибка при импорте данных из экселей в таблицу Аксес. Использую VBA так как файлов очень много и данных тоже. «The microsoft access database engine could not find the object ‘tmp17072019103744$A:X’. Make sure the object exists and that you spell its name and the path name correctly» Кто сталкивался, подскажите, пожалуйста, кто как лечил. Что за объект он имеет ввиду?! гугл перевод «Ядру базы данных Microsoft Access не удалось найти объект« tmp17072019103744 $ A: X ». Убедитесь, что объект существует и что вы правильно написали его имя и путь» Миниатюры
0 |
chernam 0 / 0 / 0 Регистрация: 01.07.2018 Сообщений: 15 |
||||
17.07.2019, 15:24 [ТС] |
2 |
|||
Дебагер ругается на строку DoCmd.TransferSpreadsheet acImport, , «tbl», wb.FullName, True, Range:=copyRange
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
17.07.2019, 15:26 |
3 |
Переводчиком не пробовали? Убедитесь, что объект существует, и что вы правильно написали его имя и путь
0 |
0 / 0 / 0 Регистрация: 01.07.2018 Сообщений: 15 |
|
17.07.2019, 16:16 [ТС] |
4 |
Переводчиком не пробовали? Спасибо, на английском я свободно и без переводчика, но от этого не легче. Все исходные и конечные пути и наименования сверял уже, к тому же код работал. Добавлено через 14 минут Добавлено через 4 минуты
0 |
-
#1
Столкнулся с проблемкой… при импорте таблицы excel FILE->PLACE выдает сообщение «cannot place this file. no filter found for requested operation.», хотя файлы на английском… с таблицами ворда такая же бочина. Может ворпос и туповат, но хоть стреляйте не могу загузить нужные таблицы!!! Помогите, плиз
-
#2
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Поиск еще не отменили. По запросу выдает с десяток веток посвященные этому вопросу.
Я понимаю, что лень — двигатель прогресса, но не до такой же степени…
-
#3
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
lex_ сказал(а):
Поиск еще не отменили. По запросу выдает с десяток веток посвященные этому вопросу.
Я понимаю, что лень — двигатель прогресса, но не до такой же степени…
да облазил я все эти ветки давно, голяк, ниче конкретного! вот и обратился к профессионалам знатокам! помогитееее!
-
#4
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
pamzec сказал(а):
… голяк, ниче конкретного! …
Вот именно!
Версии Excel, InDesign, полный путь к файлу Эксела озвучьте, пожалуйста.
-
#5
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Как правило такая фигня вылазит когда в пути к файлу и/или его имени встречаются русские буквы. Такой фигни не вылазит если таблицы копипастить. И лучше это делать из ворда. Таким глюком страдал вроде бы лишь CS2. Потом жизнь наладилась.
-
#6
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
2 lunatik
Таки да!
У меня сейчас в ходу InD CS3 и CS4 (Win Vista Ult) и оба пожирают феньки такого вида «d:Папка1Папка2Раскладка-tmp.xlsx» даже не поперхнувшись.
PS. Впрочем, ТС куда-то пропал — наверное, все наладилось у него.
-
#7
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
а может просто )))
включить галочку в Установках «вставить всю информацию с буфера»
-
#8
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Оно вообще не вставляет. См. первый пост. А без этой галочки должен вставляться гольный текст.
-
#9
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
а может просто… читать проблему топикстартера внимательно???
«…при импорте таблицы excel FILE->PLACE…»
-
#10
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
lunatik сказал(а):
Оно вообще не вставляет. См. первый пост. А без этой галочки должен вставляться гольный текст.
понилбатяпонил))
andrejK, повторять нинада
George
I wish I was a monster you think I am
-
#11
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
mina
Отставить албанский. Для тех кто не в курсах — аморальные албанские уроды обитают в других форумах.
по поводу не нашел, 14 пункт:
http://forum.rudtp.ru/showthread.php?t=9416
Эээх навеяло ностальгией… а вроде только что в CS2 работал….
-
#12
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Почему-то кажется, что топикастер спрашивает не об этом:
выдает сообщение «cannot place…», хотя файлы на английском…
-
#13
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Не по теме:
Не только файлы но и путь к ним должны быть без кириллицы.
-
#14
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
пасиб, ребят раздуплился, lunatik — rulezzzz! в indesign cs 2 в пути к файлу были папки на русском… переименовал и все ок. спасибо всем!
-
#15
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
пасиб, ребят раздуплился, lunatik — rulezzzz! в indesign cs 2 в пути к файлу были папки на русском… переименовал и все ок. спасибо всем!
-
#16
Ответ: Не импортируются таблицы excel. Помогите, ведь делаю все правильно (
Не по теме:
Народ просто подзабыл каково работать в CS2 А я в нем до сих пор много чего верстаю. Вот недавно захотел новизны — поставил CS4. И снес обратно — только время потратил на восстановление. Сверстал в CS2Ну будет свободных пару дней так разберусь поставлю нормально.
Ошибки импорта из Excel и их решения.
Раздел Импорт из Excel – предназначен для загрузки текстовых данных о товарах и услугах компании в формате XLS, XLSX, CSV.
Это может быть файл созданный по нашему шаблону для импорта, или же, к примеру, файл экспортированый с другого сайта в формате XLS, XLSX, CSV.
Рассмотрим ошибки в файле импорта, которые чаще всего допускают пользователи и решения для корректировки.
Сообщение об ошибке » В выбранном файле не все обязательные поля или файл поврежден». Как это решить?
1. Возможно, при создании файла импорта, используя наш шаблон, были допущены ошибки. В шаблоне импорта первая строка файла это подсказки, а в файле импорта первой строкой должны идти названия колонок. Нужно удалить первую строку с подсказками перед сохранением заполненного файла:
2. Ошибка возникает при попытке загрузить файл не в формате xls, xlsx или csv при импорте из Excel. Измените расширение импортируемого файла.
Если файл создан в результате экспорта с другого сайта проверьте его на соответствие с нашим шаблоном и наличием обязательных полей/колонок в файле Excel. Посмотреть правила составления файла Excel можно в Кабинете компании — Товары и Услуги — Импорт из Excel
3. Формат одной или нескольких ячеек выбран не верно. Например, в колонке ЦЕНА значение должно быть числовое и целое:
4. Если файл импорта был создан не из нашего шаблона тогда ошибка может быть из-за отсутствия или неверного заполнения поля колонок Адрес_подраздела и Идентификатор_подраздела. Если файл импорта создан из шаблона, импорт происходит даже если эти поля пустые.
После импорта отсутствуют фото к товару , хотя он были в файле импорта. Почему?
Причин, почему в результате импорта картинка не отобразилась, может быть несколько. Если это не связано с настройками импорта, то причину можно найти в файле импорта.
1. В файле импорта не указаны URL для изображений. Для импорта из Excel это колонка Ссылка_изображения. Ссылки должны быть разделены запятыми с пробелами:
Проверьте наличие ссылки в строке товара в колонке для фото, возможно там пустая строка или ссылка картинки указана с ошибкой, не полностью.
2. Также нужно проверить доступность ссылки, если это ссылка на картинку с сайта — скопируйте её и вставьте в строку браузера. Перейдите по адресу ссылки — если картинка отображается — адрес ссылки корректный.
Импорт прошел и у всех товаров теперь статус «Наличие не известно». Почему?
Для обозначения статуса наличия в колонке Наличие применяется:
Если оставить поле наличия пустым — статус вашего товара станет Наличие не известно.
Не отобразилась скидка после импорта. В чем причина?
Колонка Скидка должна иметь процентное или числовое значение, если в этой колонке (или ячейке) значение было указано не % или число — скидка не отобразится. На примере изображения ниже преобразуйте ячейки колонки Скидка в нужный формат:
В файле импорта были заполнены характеристики, но в карточке товара они оказались в Дополнительном. Почему?
На сайте компании и на портале Основные характеристики могут выступать фильтрами при поиске, а Дополнительные характеристики просто отображаются в описании к товару списком.
Если были указаны характеристики, но после импорта они отражаются в Дополнительных, значит для Рубрики, к которой относится товар, нет такой характеристики в нашей базе и система перенесла эти атрибуты в дополнительные.
Мнение эксперта
Знайка, самый умный эксперт в Цветочном городе
Если у вас есть вопросы, задавайте их мне!
Задать вопрос эксперту
Знание языка запросов Xpath для использования функции не обязательно, можно воспользоваться опцией браузера копировать Xpath. Если же вы хотите что-то уточнить, я с радостью помогу!
Облачные сервисы не требуют установки на ПК. Все данные хранятся на серверах разработчиков, вы скачиваете только результат парсинга. Доступ к программному обеспечению осуществляется через веб-интерфейс или по API.
Что значит ошибка перенос в excel
Добавить список url можно вручную, XLSX-файлом или ссылкой на XML-карту сайта. Отчеты выгружаются в форматах HTML и XLSX. Первые 500 запросов — бесплатно. Все нюансы работы с инструментом мы описали в гайде.
Ошибка разбора XML или XML Parsing Error в RSS-ленте, решения проблемы
Открыв, RSS ленту своего сайта видишь, что ленты нет, а браузер сообщает об ошибке. Как мне удается вернуть «на место», «отвалившуюся» RSS ленту я и расскажу дальше.
Примечание: Хочу поправиться и замечу, что неисправности фида не валятся с неба. Скорее всего, это результат установки нового плагина или ваше изменение, некоторых файлов в шаблоне. Так как, для формирования фида используется язык разметки XML, который имеет строгие правила синтаксиса, то любое изменение в файлах, которые не влияют на работу сайта, могут «отстегнуть» RSS.
Для исправления ошибки, я обычно делаю следующие шаги, причем исправление фида может произойти на любом шаге.
Примечание: Вообще эта синтаксическая ошибка называется ошибка разбора XML или XML Parsing Error. В разных браузерах она показывается по-разному. Например, в Chrome:
Поиск – Ошибка разбора XML или XML Parsing Error в RSS-ленте
Предположительно, ошибка разбора появляется из-за пробельных символов (пробел, новая строка, табуляция) появившихся в коде WordPress перед декларацией XML.
Для начала, попытаемся устранить ненужные пробелы в коде
Не помогло, или не хочется лазить по коду, воспользуйтесь плагином: Fix RSS Feed WordPress. Хоть и плагин не протестирован на версии 3.8, вполне может помочь в восстановлении ленты RSS.
Данный плагин не обновлялся 2 года. Скорее всего, он уже не поддерживается и может быть несовместим с текущими версиями WordPress.
Плагин установите на сайт любым из способов установки плагинов. После активации плагина, откройте его и запустите процесс исправления. Если проблема неработающего канала RSS в лишних пробелах, этот плагин должен помочь.
Если плагин Fix RSS Feed WordPress не помог, возможен конфликт одного из плагинов. Попробуйте, отключать в Консоли → Плагины → Установленные, последовательно каждый активный плагин, проверяя работоспособность ленты RSS.
Ошибки будут подсвечены желтым цветом. Ошибки связанные не с синтаксисом файлов, нужно решать для каждого конкретного случая отдельно.
Похожие посты:
2 комментария к “Ошибка разбора XML или XML Parsing Error в RSS-ленте, решения проблемы”
Это ведь уже не про RSS? по крайней мере убирать пробелы не помогло
По вопросу я не понял, после чего была такая ошибка.
Вероятно вы что-то импортируйте (контент, товары) при помощи плагина импорта.
Если плагин импорта тестирован на вашей версии, я бы сначала отключил другие плагины сайта и повторил импорт.
Если бы это не помогло, написал в suport хостинга.
Добавить комментарий Отменить ответ
Мнение эксперта
Знайка, самый умный эксперт в Цветочном городе
Если у вас есть вопросы, задавайте их мне!
Задать вопрос эксперту
Предположительно, ошибка разбора появляется из-за пробельных символов пробел, новая строка, табуляция появившихся в коде WordPress перед декларацией XML. Если же вы хотите что-то уточнить, я с радостью помогу!
Я продолжаю получать сообщение об ошибке. Это ошибка
Не уверен, что это подходящее место для этого или нет, если нет, я извиняюсь. Изначально продолжал подниматься, когда я был на ebay, теперь случается случайным образом.
Исправить ошибку Parser конфигурации
Бесплатная версия ограничена 500-ми url. В платной (лицензию можно купить на год) количество страниц для парсинга не ограничено, и она имеет гораздо больше возможностей. Среди них — парсинг цен, названий и описаний товаров с любого сайта. Как это сделать, мы подробно описали в гайде.