Excel это не сложно

Основные форумы => PowerQuery, PowerPivot, PowerBI и запросы => Тема начата: adelaur от 20.08.2020, 12:28:18



Название: ошибка при загрузке группы файлов xml
Отправлено: adelaur от 20.08.2020, 12:28:18
Добрый день, при загрузке большого кол-ва файлов xml в power query на этапе показанном на скриншоте , раскрываю колонку "Content" и появляется ошибка : "DataFormat.Error: Сбой обработки XML. Введенные данные недопустимы или не поддерживаются. (Внутренняя ошибка: Непредусмотренное объявление XML. Объявление XML должно быть первым узлом в документе, использование знаков пробела перед ним не допускается., строка 293, позиция 16.)". По одному файлу раскрывает все корректно,если  несколько файлов выдает ошибку. Прикладываю образец с xml файлами . 


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: Дмитрий Щербаков(The_Prist) от 20.08.2020, 13:21:59
Вы бы хоть пример запроса свой приложили. И версию Excel. потому что я только что загрузил все файлы без проблем. Попробуйте посмотреть шаги запроса и ознакомьтесь со статьей: Получить данные из файлов XML при помощи Power Query (https://www.excel-vba.ru/chto-umeet-excel/poluchit-dannye-iz-fajlov-xml-pri-pomoshhi-power-query/)
Вдруг свою проблему определите.


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: adelaur от 20.08.2020, 20:56:19
Видео посмотрел, кажется даже пару лет назад я его смотрел и тогда все получилось. Версия excel тогда была старая, power query  приходилось ставить . Сейчас стоит 2016 .Пример запроса это таблица которая должна получиться  ?


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: Дмитрий Щербаков(The_Prist) от 22.08.2020, 10:01:13
Пример запроса это
Если ВЫ не знаете что такое запрос в PowerQwery - то явно рано начали в нем работать :)
Запрос - это в PowerQwery по сути все, что Вы делаете. Например, подгружаете XML. Все Ваши действия по выполнению этой задачи и есть запрос. Весь текст запроса можно посмотреть с вкладки Главная -Расширенный редактор.
Однако хочется так же спросить: видео посмотрели, статью прочитали - что-то сделать попробовали?


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: adelaur от 23.08.2020, 01:21:16
Запрос так выглядит :
Код: (vb)
let
    Источник = Folder.Files("C:\Adelaur\May\J1\EF\Folder 01"),
    #"Комбинированные двоичные значения" = Binary.Combine(Источник[Content]),
    #"Импортированные данные XML" = Xml.Tables(#"Комбинированные двоичные значения")
in
    #"Импортированные данные XML"


Потом внимательней посмотрел статью и увидел это :
Если же после раскрытия значка в столбце Content содержимое наполняется беспорядочным набором символов(вроде ZCHGASsadfajVHHghHHgjJhJJHgjTrTPukhUu), то необходимо удалить последний шаг(в поле примененные шаги) и проделать следующее:
вкладка Добавить столбец(Add Column) -Пользовательский столбец(Custom Column)
в появившемся окне указать имя столбца(я его назвал Данные XML), а в поле Пользовательская формула столбца(Custom column formula) записать следующую формулу:
=Xml.Tables([Content], null, 1251)
Попробовал, частично помогло :ошибку перестал выдавать, цифры отобразились, а текст наоборот стал "не читаемым"
Запрос стал таким :
Код: (vb)
let
    Источник = Folder.Files("C:\Adelaur\May\J1\EF\Folder 01"),
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Custom", each Xml.Tables([Content], null, 1251)),
    #"Развернутый элемент Custom" = Table.ExpandTableColumn(#"Добавлен пользовательский объект", "Custom", {"Name", "Table"}, {"Custom.Name", "Custom.Table"}),
    #"Развернутый элемент Custom.Table" = Table.ExpandTableColumn(#"Развернутый элемент Custom", "Custom.Table", {"http://zakupki.gov.ru/oos/types/1", "Attribute:schemeVersion"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1", "Custom.Table.Attribute:schemeVersion"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table", "Custom.Table.http://zakupki.gov.ru/oos/types/1", {"protocolLot", "protocolPublisher", "purchaseNumber"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher", "Custom.Table.http://zakupki.gov.ru/oos/types/1.purchaseNumber"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot", {"applications"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications", {"application"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application", {"appRating", "winnerPrice"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application.appRating", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application.winnerPrice"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolLot.applications.application", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher", {"publisherOrg"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher.publisherOrg"}),
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher.publisherOrg" = Table.ExpandTableColumn(#"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher", "Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher.publisherOrg", {"fullName"}, {"Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher.publisherOrg.fullName"})
in
    #"Развернутый элемент Custom.Table.http://zakupki.gov.ru/oos/types/1.protocolPublisher.publisherOrg"


Потом  обратил внимание на кодировку, сверил со своими файлами : у  меня UTF-8. Поменял , появилась новая ошибка : "Ошибка выражения: Имя "UTF" не распознано. Убедитесь в том, что оно написано верно."
Запрос :
Код: (vb)
let
    Источник = Folder.Files("C:\Adelaur\May\J1\EF\Folder 01"),
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Custom", each Xml.Tables([Content], null, UTF-8))
in
    #"Добавлен пользовательский объект"


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: Дмитрий Щербаков(The_Prist) от 24.08.2020, 11:05:55
Уберите тире из UTF-8 - UTF8


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: adelaur от 25.08.2020, 13:39:46
Все равно выдает ошибку "Ошибка выражения: Имя "UTF8" не распознано. Убедитесь в том, что оно написано верно."
Код: (vb)
let
    Источник = Folder.Files("C:\Adelaur\May\J1\EF\Folder 01"),
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Custom", each Xml.Tables([Content], null, UTF8))
in
    #"Добавлен пользовательский объект"


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: Дмитрий Щербаков(The_Prist) от 25.08.2020, 13:59:11
Код: (vb)
each Xml.Tables([Content], null, TextEncoding.Utf8)) 


Название: Re:ошибка при загрузке группы файлов xml
Отправлено: adelaur от 25.08.2020, 14:42:23
Спасибо, теперь все заработало .