Страницы: 1
RSS
Язык М правка для добавления названия запроса в ячейку, Подобное решение хорошо описано здесь https://www.planetaexcel.ru/techniques/12/2152/
 
Привет. Импортирую файлы из папки. Если по одному, то название сохраняется в названии листа, но если импортировать сразу все файлы, то не могу вставить название в таблицу, т.е ячейку Количество заменить на название Таблицы/Запроса. Подобное рассматривалось здесь Сборка таблиц из разных файлов Excel с помощью Power Query но я так и не понял, что сделать, изменить в расширенных настройках.
Изменено: neurologkhv - 21.04.2025 10:01:05
 
т.е. надо посмотреть 13 минут видео, чтобы ВОЗМОЖНО понять, что надо сделать? название чего и куда и как?
 
Спасибо. Изменил ссылку с привязкой к месту.

Т.е вместо Количество вставить Имя
Изменено: neurologkhv - 21.04.2025 10:18:16
 
ваш код не работает при подстановке в него приложенного текстового файла. что надо сделать - до сих пор не ясно. ссылка приводит на описание как сделать пользовательскую функцию - зачем? картинка в последнем вашем сообщении не открывается.

ПС: через образец навряд ли тут будет кто-то делать, смысла в этом нет никакого, и если вы знаете PQ, чтобы вытащить нужные данные из html, то использовать образец совсем странно. Напишите словами, что надо сделать + если ваш код вытаскивает данные из html, то сделайте, чтобы он работал на отдельно взятом текстовом файле.
Вместо образца - как вариант подключитесь к папке, загрузите все объекты в папке в виде таблицы и через пользовательский столбец вытащите из каждого файла нужный текст, потом разверните все вложенные таблицы.
Изменено: voler83 - 21.04.2025 13:40:23
 
Здравствуйте!
pq
 
Цитата
написал:
let    f=(x)=>[a=Text.FromBinary(x)
Спасибо! Это было бы красивым решением, но файлы в папках имеют цифровые имена (99, 100, 1001.txt...)
Power Query название определяет по заголовку  <h4><u>"Пшеница твердая, зерно"</u>.</h4> каким образом код

let    f=(x)=>[a=Text.FromBinary(x)

сделать?

let    f=(x)=>[a=Text.<h4><u>"*.*"</u>.</h4>(x)
 
neurologkhv,
https://powerquery.how/text-positionof/
https://powerquery.how/text-start/
https://powerquery.how/text-length/
ну и типа того там
 
Цитата
neurologkhv написал:
Power Query название определяет по заголовку    "Пшеница твердая, зерно" .
что это имеет общего с вашим начальным постом?.....хотели всех заставить смотреть 13 минут, и никто ничего бы не понял....
Изменено: voler83 - 22.04.2025 00:06:23
 
Цитата
написал:
что это имеет общего с вашим начальным постом?
Согласен с вами. Я написал не совсем точно, безграмотно... поэтому ответила и предложила решение только талантливый программист Ma_Ri

У Николая Павлова есть способ использовать Суперфункцию (регулярные выражения в Power Query) ...3. Идём на вкладку Просмотр - Расширенный редактор (View - Advanced Editor), стираем весь М-код пустого запроса и вставляем туда код нашей суперфункции:

Как будет выглядеть такое регулярное выражение для <h4><u>"Пшеница твердая, зерно"</u>.</h4> где вместо "Пшеница твердая, зерно" будет любое название?
 
neurologkhv, сначала стоит посмотреть стандартные функции хотя бы....
https://powerquery.how/text-betweendelimiters/
Text.BetweenDelimiters([Столбец1], "<h4>", ".</h4>")
Изменено: voler83 - 22.04.2025 01:31:58
 
voler83,  спасибо!

Куда вставить Text.BetweenDelimiters([Столбец1], "<h4>", ".</h4>")

в код М
Код
let
    Источник = File.Contents("C:\Users\HOME\Music\Исходник.txt"),
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(1)"}, {"Column2", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(2)"}, {"Column3", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(3)"}, {"Column4", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(4)"}, {"Column5", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(5)"}, {"Column6", "TABLE.table.table-border.tc-chemical-table > * > TR > :nth-child(6)"}}, [RowSelector="TABLE.table.table-border.tc-chemical-table > * > TR"]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Извлеченная таблица из HTML",{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}})
in
    #"Измененный тип"
 
pq (для одного файла txt)
 
Цитата
neurologkhv написал:
Куда вставить Text.BetweenDelimiters

ваш код для обработки html на моем компе не работает - старый PQ - вставьте весь свой код обработки - вместе с let и in - в шаге "код_обработки_HTML" , заменив источники в шагах этого кода на соотв-е поле с вложенными файлами, и у вас в столбце "код_обработки_HTML" должны появиться ваши таблицы - разверните их затем
+ ваши разделители "<h4>"  и ".</h4>" неправильные - подберите правильные сами в шаге TextBetweenDelimiters

Скрытый текст
Изменено: voler83 - 22.04.2025 10:44:29
 
sotnikov, Очень впечатляет! Поражают ваши знания!!!

А как применить этот код для всей папки C:\Users\HOME\Documents\sostav?

let
Источник = Folder.Files("C:\Users\HOME\Documents\sostav"),

Нужно ли вносить изменения в Расширенном редакторе в Примере файла?

#"Пример файла" meta [IsParameterQuery=true, BinaryIdentifier=#"Пример файла", Type="Binary", IsParameterQueryRequired=true]
 
pq (для папки файлов txt)
 
Цитата
написал:
TextBetweenDelimiters
Спасибо! Функция действительно помогла!
 
sotnikov, Спасибо!!!
Страницы: 1
Читают тему
Наверх