Страницы: 1
RSS
Импорт из файла с помощью Power Query, Импорт из файла с помощью Power Query
 
Добрый день!

Помогите пожалуйста разобраться возможно ли загрузить данный файл в PQ.
Несмотря на расширение файл XML но не типичный а какой то специальный для MS Office (Таблица XML 2003)
 
Данные из файл выгружаются в PQ.
Но:
1. загрузить в PQ смогла только из самого файла, больше никак.
2. полученный результат пришлось сохранить в другом формате Excel, т.к. сохранение в исходном формате убивает все запросы PQ.
Нельзя ли просто пересохранить данный файл  в другом формате Excel - он тогда нормально загружается в PQ...
Изменено: turbidgirl - 12.08.2019 11:09:39
 
Спасибо но запросы PQ в другом файле.
Сейчас приходится руками открывать этот файл и сохранять в формате Excel.
Побороть оригинальный формат у меня не получилось. Может быть у кого то есть решение
как открыть данный файл без рук.
 
Запишите минимакрос, как вы в файле, где создаете запрос PQ, открываете этот файл, сохраняете в нужном формате и закрываете. Вынесите потом этот макрос на панель быстрого доступа и запускайте каждый раз перед созданием или обновлением запроса PQ.
 
.
Код
let
    Source = Xml.Tables(File.Contents("C:\abc\Пример (4).xls")),
    Table = Source{1}[Table],
    #"Expanded {0}" = Table.ExpandTableColumn(Table, "Table", {"WindowHeight", "WindowWidth", "WindowTopX", "WindowTopY", "ProtectStructure", "ProtectWindows"}, {"WindowHeight", "WindowWidth", "WindowTopX", "WindowTopY", "ProtectStructure", "ProtectWindows"})
in
    #"Expanded {0}"
 
Добрый день!
Код
let
    Источник = Xml.Tables(File.Contents("C:\Пример (5).xls")),
    Table3 = Источник{3}[Table],
    Table0 = Table3{0}[Table],
    Table1 = Table0{1}[Table],
    #"Развернутый элемент Cell" = Table.ExpandTableColumn(Table1, "Cell", {"Data", "urn:schemas-microsoft-com:office:spreadsheet"}, {"Cell.Data", "Cell.urn:schemas-microsoft-com:office:spreadsheet"}),
    #"Развернутый элемент Cell.Data" = Table.ExpandTableColumn(#"Развернутый элемент Cell", "Cell.Data", {"Element:Text", "urn:schemas-microsoft-com:office:spreadsheet"}, {"qq", "Cell.Data.urn:schemas-microsoft-com:office:spreadsheet"}),
    #"Замененное значение" = Table.ReplaceValue(#"Развернутый элемент Cell.Data","����� ��:","итого по",Replacer.ReplaceText,{"qq"}),
    #"Замененное значение1" = Table.ReplaceValue(#"Замененное значение"," ������","оплата",Replacer.ReplaceText,{"qq"}),
    #"Удаленные верхние строки" = Table.Skip(#"Замененное значение1",16),
    #"Добавлен индекс" = Table.AddIndexColumn(#"Удаленные верхние строки", "Индекс", 0, 1),
    #"Столбец с выполненным целочисленным делением" = Table.TransformColumns(#"Добавлен индекс", {{"Индекс", each Number.IntegerDivide(_, 10), Int64.Type}}),
    #"Сгруппированные строки" = Table.Group(#"Столбец с выполненным целочисленным делением", {"Индекс"}, {{"qq", each Table.FirstN(Table.Transpose(_),1), type table}}),
    #"Развернутый элемент qq" = Table.ExpandTableColumn(#"Сгруппированные строки", "qq", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент qq",{"Индекс"})
in
    #"Удаленные столбцы"
Изменено: Anton555 - 12.08.2019 13:00:36
 
Доброе время суток.
Начальный вариант чтения. Далее обычные трансформации
Код
let
    Source = Xml.Tables(File.Contents("D:\Path\Пример.xls"), null, 1251),
    sheet = Source{[Name="Worksheet"]}[Table],
    table = sheet{[Name="Table"]}[Table],
    rows = table{[Name="Row"]}[Table][[Cell]],
    toCells = Table.TransformColumns(rows, {"Cell", each if _[Data]? <> null then Table.FromRows({_[Data]}) else null}),
    heads = List.Distinct(List.Combine(List.RemoveNulls(List.Transform(toCells[Cell], each if _ <> null then Table.ColumnNames(_) else null)))),
    expanded = Table.ExpandTableColumn(toCells, "Cell", heads),
    toCellData = Table.ReplaceValue(expanded, null, null, (a, b, c) => if a <> null then a[#"Element:Text"]{0} else null, heads)
in
    toCellData
Изменено: Андрей VG - 12.08.2019 13:13:48
 
Anton555 Большое спасибо.
То что надо.
Подобрал кодовою страницу.
Запрос сократился на 2 хода
Код
let
    Источник = Xml.Tables(File.Contents("C:\Пример (5).xls"), null, 1251),
    Table3 = Источник{3}[Table],
    Table0 = Table3{0}[Table],
    Table1 = Table0{1}[Table],
    #"Развернутый элемент Cell" = Table.ExpandTableColumn(Table1, "Cell", {"Data", "urn:schemas-microsoft-com:office:spreadsheet"}, {"Cell.Data", "Cell.urn:schemas-microsoft-com:office:spreadsheet"}),
    #"Развернутый элемент Cell.Data" = Table.ExpandTableColumn(#"Развернутый элемент Cell", "Cell.Data", {"Element:Text", "urn:schemas-microsoft-com:office:spreadsheet"}, {"qq", "Cell.Data.urn:schemas-microsoft-com:office:spreadsheet"}),
    #"Удаленные верхние строки" = Table.Skip(#"Развернутый элемент Cell.Data",16),
    #"Добавлен индекс" = Table.AddIndexColumn(#"Удаленные верхние строки", "Индекс", 0, 1),
    #"Столбец с выполненным целочисленным делением" = Table.TransformColumns(#"Добавлен индекс", {{"Индекс", each Number.IntegerDivide(_, 10), Int64.Type}}),
    #"Сгруппированные строки" = Table.Group(#"Столбец с выполненным целочисленным делением", {"Индекс"}, {{"qq", each _, type table}}),
    a = Table.TransformColumns(#"Сгруппированные строки", {{"qq", each Table.Transpose(_), type table}}),
    w = Table.TransformColumns(a, {{"qq", each Table.FirstN(_, 1), type table}}),
    #"Развернутый элемент qq" = Table.ExpandTableColumn(w, "qq", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент qq",{"Индекс"})
in
    #"Удаленные столбцы"

:)  
Изменено: bai72 - 12.08.2019 13:19:07
 
Андрей VG и  Вам большое спасибо будем пробывать и разбираться
 
Цитата
Андрей VG написал:
Начальный вариант чтения. Далее обычные трансформации
Доброго дня всем.
Андрей, можно попросить Вас объяснить
(a, b, c) в строчке из Вашего кода.
Код
toCellData = Table.ReplaceValue(expanded, null, null, (a, b, c) => if a <> null then a[#"Element:Text"]{0} else null, heads)
Страницы: 1
Наверх