Не указан путь к файлу таблицы соответствий альфа
Таблица представляет собой 2 столбца, 1ый это список кустарников, 2ой - список деревьев
В 1ом файле мы циклом идем по столбцу F, начиная с F4, берем значение ячейки и сравниваем его со значениями обоих столбцов в таблице соответствия. Если наименование породы есть в обоих столбцах, то оставляем содержимое ячейки E4 таким каким оно было(по сути переходим к следующей ячейке в столбце F), а если наинменование есть только в списке кустарников или деревьев, то вписываем в E4 соответствующее значение (Кустарник/Дерево)
Затем цикл переходит к следующей ячейке (F5).
Приложу оба файла и попробую пояснить на примере:
Начинаем с ячейки F4 в "файл1". Сравниваем значение ячейки (F4="Шиповник") с каждой ячейкой таблицы соответствия, сначала в столбце А, потом в столбце В, если находится соответсвие в двух столбцах, то значение ячейки E4 не меняется, если соответствие находится в Столбце А (А337="Шиповник"), то пишем в Е4 "Кустарник", теперь можно переходить к следующей ячейке в "файл1"
Перешли к ячейке F5, совпадение произошло и в столбце А и в столбце В, значит оставляем E5 без изменений, переходим к следующей ячейке в обрабатываемом файле.
F7 - соответствие с ячейкой A337 в таблице соответсвия - в ячейку E4 идет "Кустарник"
F8 - вот тут соответствие находится в столбце с наименованиями кустарников, а в ячейке E8 у нас стоит "Дерево", значит меняем на "кустарник"
ну и так далее, впринципе больше вариантов быть не должно, то есть либо наименование есть в обоих столбцах, тогда оставляем в обрабатываемом файле характеристику без изменений, либо меняем в соотвествии с таблицей.
Цикл по столбцу F заканчивается, как только попадает на пустую ячейку.
Надеюсь понятно обьяснил задачу)
При прикреплении имена файлов поменялись, файл1 это обрабатываемый, а таблица это файл с 2умя столбцами.
Таблица представляет собой 2 столбца, 1ый это список кустарников, 2ой - список деревьев
В 1ом файле мы циклом идем по столбцу F, начиная с F4, берем значение ячейки и сравниваем его со значениями обоих столбцов в таблице соответствия. Если наименование породы есть в обоих столбцах, то оставляем содержимое ячейки E4 таким каким оно было(по сути переходим к следующей ячейке в столбце F), а если наинменование есть только в списке кустарников или деревьев, то вписываем в E4 соответствующее значение (Кустарник/Дерево)
Затем цикл переходит к следующей ячейке (F5).
Приложу оба файла и попробую пояснить на примере:
Начинаем с ячейки F4 в "файл1". Сравниваем значение ячейки (F4="Шиповник") с каждой ячейкой таблицы соответствия, сначала в столбце А, потом в столбце В, если находится соответсвие в двух столбцах, то значение ячейки E4 не меняется, если соответствие находится в Столбце А (А337="Шиповник"), то пишем в Е4 "Кустарник", теперь можно переходить к следующей ячейке в "файл1"
Перешли к ячейке F5, совпадение произошло и в столбце А и в столбце В, значит оставляем E5 без изменений, переходим к следующей ячейке в обрабатываемом файле.
F7 - соответствие с ячейкой A337 в таблице соответсвия - в ячейку E4 идет "Кустарник"
F8 - вот тут соответствие находится в столбце с наименованиями кустарников, а в ячейке E8 у нас стоит "Дерево", значит меняем на "кустарник"
ну и так далее, впринципе больше вариантов быть не должно, то есть либо наименование есть в обоих столбцах, тогда оставляем в обрабатываемом файле характеристику без изменений, либо меняем в соотвествии с таблицей.
Цикл по столбцу F заканчивается, как только попадает на пустую ячейку.
Надеюсь понятно обьяснил задачу)
При прикреплении имена файлов поменялись, файл1 это обрабатываемый, а таблица это файл с 2умя столбцами. Hammeron
Таблица представляет собой 2 столбца, 1ый это список кустарников, 2ой - список деревьев
В 1ом файле мы циклом идем по столбцу F, начиная с F4, берем значение ячейки и сравниваем его со значениями обоих столбцов в таблице соответствия. Если наименование породы есть в обоих столбцах, то оставляем содержимое ячейки E4 таким каким оно было(по сути переходим к следующей ячейке в столбце F), а если наинменование есть только в списке кустарников или деревьев, то вписываем в E4 соответствующее значение (Кустарник/Дерево)
Затем цикл переходит к следующей ячейке (F5).
Приложу оба файла и попробую пояснить на примере:
Начинаем с ячейки F4 в "файл1". Сравниваем значение ячейки (F4="Шиповник") с каждой ячейкой таблицы соответствия, сначала в столбце А, потом в столбце В, если находится соответсвие в двух столбцах, то значение ячейки E4 не меняется, если соответствие находится в Столбце А (А337="Шиповник"), то пишем в Е4 "Кустарник", теперь можно переходить к следующей ячейке в "файл1"
Перешли к ячейке F5, совпадение произошло и в столбце А и в столбце В, значит оставляем E5 без изменений, переходим к следующей ячейке в обрабатываемом файле.
F7 - соответствие с ячейкой A337 в таблице соответсвия - в ячейку E4 идет "Кустарник"
F8 - вот тут соответствие находится в столбце с наименованиями кустарников, а в ячейке E8 у нас стоит "Дерево", значит меняем на "кустарник"
ну и так далее, впринципе больше вариантов быть не должно, то есть либо наименование есть в обоих столбцах, тогда оставляем в обрабатываемом файле характеристику без изменений, либо меняем в соотвествии с таблицей.
Цикл по столбцу F заканчивается, как только попадает на пустую ячейку.
Надеюсь понятно обьяснил задачу)
При прикреплении имена файлов поменялись, файл1 это обрабатываемый, а таблица это файл с 2умя столбцами. Автор - Hammeron
Дата добавления - 10.02.2011 в 18:24
Нет, Сергей, это не оптимально. Можно наверное за два приёма накопировать рядом соответствий и потом через ЕСЛИ вытянуть результат, но это неоптимально.
Оптимально - макрос на массивах.
Хотя если смотреть на то, что данные в csv, то код нужно писать не в виде макроса и в третьем файле xls (т.к.в csv макрос не поместить), а например в виде скрипта vbs и обрабатывать csv как текст.
Считать оба файла, сделать изменения, сохранить изменённый файл.
Будет полегче, быстрее запускаться, но может чуть дольше работать (доли секунды/пару секунд, смотря на объём), зато одним кликом по скрипту можно получить результат (если путь к файлам не нужно выбирать в диалоге). И без Экселя. Но тогда это не по нашему профилю
Нет, Сергей, это не оптимально. Можно наверное за два приёма накопировать рядом соответствий и потом через ЕСЛИ вытянуть результат, но это неоптимально.
Оптимально - макрос на массивах.
Хотя если смотреть на то, что данные в csv, то код нужно писать не в виде макроса и в третьем файле xls (т.к.в csv макрос не поместить), а например в виде скрипта vbs и обрабатывать csv как текст.
Считать оба файла, сделать изменения, сохранить изменённый файл.
Будет полегче, быстрее запускаться, но может чуть дольше работать (доли секунды/пару секунд, смотря на объём), зато одним кликом по скрипту можно получить результат (если путь к файлам не нужно выбирать в диалоге). И без Экселя. Но тогда это не по нашему профилю Hugo
Если эту задачу нужно автоматизировать, т.к. она будет часто выполняться, или этот процесс - звено в цепи обработки данных
Это звено в цепи обработки данных) Как раз поэтому нужен макрос) Собственно я в csv пользуюсь 2умя простыми макросами, и хотел еще добавить к ним функцию, описанную в первом посте, не думал что это настолько сложно, там по сути то пару циклов да пару ветвлений. Формулами результат есть, но это опять же надо формулу вставлять в каждый документ, что в итоге делает работу довольно громоздкой, неужели нельзя допустим чтобы макрос обращался к подгруженному csv файлу, и обрабатывал в соответствии с задачей обрабатываемый файл?
Если эту задачу нужно автоматизировать, т.к. она будет часто выполняться, или этот процесс - звено в цепи обработки данных
Это звено в цепи обработки данных) Как раз поэтому нужен макрос) Собственно я в csv пользуюсь 2умя простыми макросами, и хотел еще добавить к ним функцию, описанную в первом посте, не думал что это настолько сложно, там по сути то пару циклов да пару ветвлений. Формулами результат есть, но это опять же надо формулу вставлять в каждый документ, что в итоге делает работу довольно громоздкой, неужели нельзя допустим чтобы макрос обращался к подгруженному csv файлу, и обрабатывал в соответствии с задачей обрабатываемый файл? Hammeron
Если эту задачу нужно автоматизировать, т.к. она будет часто выполняться, или этот процесс - звено в цепи обработки данных
Это звено в цепи обработки данных) Как раз поэтому нужен макрос) Собственно я в csv пользуюсь 2умя простыми макросами, и хотел еще добавить к ним функцию, описанную в первом посте, не думал что это настолько сложно, там по сути то пару циклов да пару ветвлений. Формулами результат есть, но это опять же надо формулу вставлять в каждый документ, что в итоге делает работу довольно громоздкой, неужели нельзя допустим чтобы макрос обращался к подгруженному csv файлу, и обрабатывал в соответствии с задачей обрабатываемый файл? Автор - Hammeron
Дата добавления - 11.02.2011 в 11:28
"Можно всё, были бы время и деньги" - так где-то в подписи видел
Расскажите подробнее - почему макрос, как он оказался в csv, зачем csv загружаете в Эксель, нужно ли сохранять изменения в файле и в каком формате - xls или csv?
Т.е. можно сделать анализ и сохранить изменения скриптом (или макросом) без открытия этих файлов в Экселе.
Но работа не такая простая, как кажется. Т.е. несложно в принципе, но муторно, если именно такой алгоритм уже не готов, и его нужно придумывать. Мне так кажется.
"Можно всё, были бы время и деньги" - так где-то в подписи видел
Расскажите подробнее - почему макрос, как он оказался в csv, зачем csv загружаете в Эксель, нужно ли сохранять изменения в файле и в каком формате - xls или csv?
Т.е. можно сделать анализ и сохранить изменения скриптом (или макросом) без открытия этих файлов в Экселе.
Но работа не такая простая, как кажется. Т.е. несложно в принципе, но муторно, если именно такой алгоритм уже не готов, и его нужно придумывать. Мне так кажется. Hugo
Ну макрос потому что нужно получить изменения в файле грубо говоря нажав на одну кнопку. Сохранять можно и вручную, не так это и долго, открывать каждый файл, чтобы запустить макрос тоже не особо напрягает, то есть по сути скрипт который бы все это пакетно обрабатывал не нужен. Я мог бы попробовать описать алгоритм на каком нить подобии псевдокода)) Но я думал что все подробно расписал в первом посте)
Ну макрос потому что нужно получить изменения в файле грубо говоря нажав на одну кнопку. Сохранять можно и вручную, не так это и долго, открывать каждый файл, чтобы запустить макрос тоже не особо напрягает, то есть по сути скрипт который бы все это пакетно обрабатывал не нужен. Я мог бы попробовать описать алгоритм на каком нить подобии псевдокода)) Но я думал что все подробно расписал в первом посте) Hammeron
Ну описано подробно и понятно, но вот как в коде сделать например это - "если находится соответствие в двух столбцах". пока мутно. Flag1 и flag2 анализировать?
Но сделать можно.
Открыть файл с кодом, нажать кнопку, выбрать в диалоге один файл, потом другой ( кстати, это нужно, или пути постоянны?), потом сохранить вручную.
Проще одним кликом по скрипту, ну и остаётся выбор файлов, если нужно.
Ну описано подробно и понятно, но вот как в коде сделать например это - "если находится соответствие в двух столбцах". пока мутно. Flag1 и flag2 анализировать?
Но сделать можно.
Открыть файл с кодом, нажать кнопку, выбрать в диалоге один файл, потом другой ( кстати, это нужно, или пути постоянны?), потом сохранить вручную.
Проще одним кликом по скрипту, ну и остаётся выбор файлов, если нужно. Hugo
Тут 3 исхода получается:
1. Находится соответствие в первом столбце (меняем значение на "кустарник")
2. находится соответствие во втором столбце (меняем значение на "дерево")
3. находится в обоих - вот этот пункт и вправду геморный, я думаю надо как то его исключить, чтобы осталось 2 исхода. тут мне видится такое решение: сделать так, чтобы алгоритм работал только с определенными наименованиями пород, то есть задать ветвление такого типа:
Идем циклом по столбцу F
от i = 1 до n (n - номер последней заполненной ячейки)
ЕСЛИ Fi не равно "Клен ясенелистный" ИЛИ "Боярышник" ИЛИ "Вишня" (и так далее, этот список я сам дополню, но суть в том, что эти наименования встречаются в обоих столбцах), то
Дальше идет сравнивание ячейки с таблицей соответствия и присваивание значения ячейки Ei (дерево/кустарник, в зависимости от столбца, в котором он находит совпадение)
То есть мы сейчас исключили ту часть макроса которая бы работала с флаговыми переменными, упростив задачу)
теперь по поводу того как я вижу как это должно происходить. Макрос записывается в личную книгу макросов, создается кнопка ну и тд, это понятно как сделать и не нуждается в описании)
Далее открывается файл, который представляет из себя таблицу соответствия, он постоянно открыт во время работы и его подгруженный статус является необходимым условием для работы макроса.
Затем открывается файл который необходимо обработать, нажимается кнопка, запускающая макрос, макрос пробегает по файлу, делает необходимые замены, затем я вручную сохраняю файл, открываю следующий, и цикл повторяется. Заморачиваться скриптом думаю не стоит)
Тут 3 исхода получается:
1. Находится соответствие в первом столбце (меняем значение на "кустарник")
2. находится соответствие во втором столбце (меняем значение на "дерево")
3. находится в обоих - вот этот пункт и вправду геморный, я думаю надо как то его исключить, чтобы осталось 2 исхода. тут мне видится такое решение: сделать так, чтобы алгоритм работал только с определенными наименованиями пород, то есть задать ветвление такого типа:
Идем циклом по столбцу F
от i = 1 до n (n - номер последней заполненной ячейки)
ЕСЛИ Fi не равно "Клен ясенелистный" ИЛИ "Боярышник" ИЛИ "Вишня" (и так далее, этот список я сам дополню, но суть в том, что эти наименования встречаются в обоих столбцах), то
Дальше идет сравнивание ячейки с таблицей соответствия и присваивание значения ячейки Ei (дерево/кустарник, в зависимости от столбца, в котором он находит совпадение)
То есть мы сейчас исключили ту часть макроса которая бы работала с флаговыми переменными, упростив задачу)
теперь по поводу того как я вижу как это должно происходить. Макрос записывается в личную книгу макросов, создается кнопка ну и тд, это понятно как сделать и не нуждается в описании)
Далее открывается файл, который представляет из себя таблицу соответствия, он постоянно открыт во время работы и его подгруженный статус является необходимым условием для работы макроса.
Затем открывается файл который необходимо обработать, нажимается кнопка, запускающая макрос, макрос пробегает по файлу, делает необходимые замены, затем я вручную сохраняю файл, открываю следующий, и цикл повторяется. Заморачиваться скриптом думаю не стоит) Hammeron
Идем циклом по столбцу F
от i = 1 до n (n - номер последней заполненной ячейки)
ЕСЛИ Fi не равно "Клен ясенелистный" ИЛИ "Боярышник" ИЛИ "Вишня" (и так далее, этот список я сам дополню, но суть в том, что эти наименования встречаются в обоих столбцах), то
Дальше идет сравнивание ячейки с таблицей соответствия и присваивание значения ячейки Ei (дерево/кустарник, в зависимости от столбца, в котором он находит совпадение)
То есть мы сейчас исключили ту часть макроса которая бы работала с флаговыми переменными, упростив задачу)
теперь по поводу того как я вижу как это должно происходить. Макрос записывается в личную книгу макросов, создается кнопка ну и тд, это понятно как сделать и не нуждается в описании)
Далее открывается файл, который представляет из себя таблицу соответствия, он постоянно открыт во время работы и его подгруженный статус является необходимым условием для работы макроса.
Затем открывается файл который необходимо обработать, нажимается кнопка, запускающая макрос, макрос пробегает по файлу, делает необходимые замены, затем я вручную сохраняю файл, открываю следующий, и цикл повторяется. Заморачиваться скриптом думаю не стоит) Автор - Hammeron
Дата добавления - 11.02.2011 в 14:01
Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.
Вопрос в догонку: где нужно ставить указанные драйвера на клиенте или на сервере? (клиент серверный вариант)
Сергей, первый файл с вашего скрина 32-разрядный, второй 64-х.
Для серверной базы драйвер надо ставить на сервере.
Здравствуйте. АА5 - файловая, БП 3.0 файловая.
Проблема при загрузке в БП из альфы. Только у одного пользователя в БП выявляется такая ошибка. У других все норм работает на этом же компе. Куда копать?
Добрый день, Артем, надо перейти в каталог 1с 8.3 необходимой версии, создать там файл с именем ads.ini,
Указать в нем текст
Добрый день!
Раньше была Альфа-авто ред. 4. В настройках таблицы соответствия указываю старую таблицу соответствия.Переходим на ААА 5.1. При попытке загрузить из ААА 5.1 документ реализацию в Бухгалтерию 3.0 выходит следующая ошибка. Как решить проблему?
Доброго дня.
Подскажите, пожалуйста, можно ли при обмене АА-БП, сохранять структур подчиненных документов как в альфе!? Или как это контролировать в альфе?
Бухгалтер, почему-то, задал такой вопрос. Ему не удобно, что при загрузке банка, не понятно какой счет, к какому наряду относится. вот дословно его вопрос, внесите ясность, если можно!
"Добрый день! Вы сказали , что при переливе (т.е. выгрузке) из АЛЬФЫ все документы должны быть связаны между собой! К сожалению, не вижу связи документов!
Когда с р/с проходит оплата Назначение оплаты:доплата за ремонт Toyota Corolla №. (заказ-наряд №77000001006 от 13.11.2017). я Должна подтянуть с данной оплате соответствующий счет, а потом с этим же счетом у меня должен соединиться Акт выполненных работ(т.е акт на основании счета) Я ничего не вижу : какой документ к чему относится! и что это за номер прилит к акту выполненных работ!
Что мне делать. "
Я честно говоря сам впервые сталкиваюсь с этим, т.к. обычно бухгалтера сами колдуют у себя в БП. Но тут задали такой вопрос)
Microsoft Excel является наиболее широко используемым программным обеспечением для работы с электронными таблицами в мире, и на то есть веская причина: удобный интерфейс и мощные встроенные инструменты упрощают работу с данными.
Но если вы хотите выполнить более сложную обработку данных, вам нужно выйти за пределы возможностей Excel и начать использовать язык сценариев / программирования, такой как Python. Вместо того, чтобы вручную копировать ваши данные в базы данных, вот краткое руководство о том, как загрузить ваши данные Excel в Python с помощью Pandas.
Примечание. Если вы никогда ранее не использовали Python, этот учебник может оказаться немного сложным. Мы рекомендуем начать с этих сайтов для изучения Python сайтов для изучения программирования на Python сайтов для изучения и эти базовые примеры Python, чтобы начать работу.
Подготовка данных Excel
Для этого примера, давайте использовать образец набора данных: книгу Excel под названием Cars.xlsx .
Этот набор данных отображает марку, модель, цвет и год автомобилей, внесенных в таблицу. Таблица отображается в виде диапазона Excel. Панды достаточно умен, чтобы правильно читать данные.
Эта книга сохраняется в каталоге Desktop, здесь используется путь к файлу:
Вам нужно будет знать путь к файлу книги, чтобы использовать Pandas. Давайте начнем с открытия кода Visual Studio для написания сценария. Если у вас нет текстового редактора, мы рекомендуем либо Visual Studio Code, либо Atom Editor.
Работа с путем к файлу
Вспомните наш путь в этом примере: /Users/grant/Desktop/Cars.xlsx
Вам потребуется этот путь к файлу, указанный в вашем скрипте, для извлечения данных. Вместо того чтобы ссылаться на путь внутри функции Read_Excel, сохраняйте код чистым, сохраняя путь в переменной:
Теперь вы готовы извлечь данные с помощью функции Pandas!
Что такое панды?
Библиотека анализа данных Python («Pandas») — это библиотека с открытым исходным кодом для языка программирования Python, которая используется для анализа и манипулирования данными.
Pandas загружает данные в объекты Python, известные как Dataframes , которые хранят данные в строках и столбцах, как в традиционной базе данных. Как только Dataframe создан, им можно манипулировать с помощью Python, открывая целый мир возможностей.
Импорт библиотек Python
Откройте ваш текстовый редактор и создайте новый файл Python. Давайте назовем это Script.py .
Для работы с Pandas в вашем скрипте вам необходимо импортировать его в свой код. Это делается с помощью одной строки кода:
Здесь мы загружаем библиотеку Pandas и присоединяем ее к переменной «pd». Вы можете использовать любое имя, какое захотите, мы используем pd как сокращение от Pandas.
Для работы с Excel с использованием Pandas вам необходим дополнительный объект с именем ExcelFile . ExcelFile встроен в экосистему Pandas, поэтому вы импортируете напрямую из Pandas:
Извлечение данных Excel с помощью Pandas.Read_Excel ()
После импорта Pandas и установки переменной пути теперь вы можете использовать функции в объекте Pandas для выполнения нашей задачи.
Функция, которую вам нужно будет использовать, имеет соответствующее имя Read_Excel . Функция Read_Excel берет путь к файлу книги Excel и возвращает объект DataFrame с содержимым книги. Панды кодируют эту функцию как:
Аргумент «путь» будет путем к нашей книге Cars.xlsx, и мы уже установили строку пути к переменной Cars_Path.
Вы готовы создать объект DataFrame! Давайте соберем все вместе и установим объект DataFrame в переменную с именем «DF»:
Наконец, вы хотите просмотреть DataFrame, поэтому давайте распечатаем результат. Добавьте оператор print в конец вашего скрипта, используя переменную DataFrame в качестве аргумента:
Время запустить скрипт в вашем терминале!
Установка панд
Примечание. Для установки Pandas у вас должен быть установлен Python 2.7 или более поздней версии.
Чтобы начать работать с Pandas на вашем компьютере, вам необходимо импортировать библиотеку Pandas. Если вы ищете решение для тяжеловесов, вы можете скачать Anaconda Python Distribution со встроенным Pandas. Если вы не используете Anaconda, Pandas просто установить в своем терминале.
Pandas — это пакет PyPI, что означает, что вы можете установить PIP для Python через командную строку. Современные системы Mac поставляются с PIP. Для других Windows, Linux и более старых систем легко узнать, как установить PIP для Python.
После того, как вы открыли свой терминал, последнюю версию Pandas можно установить с помощью команды:
Пандам также требуется библиотека NumPy, давайте также установим это в командной строке:
Теперь у вас установлена Pandas и вы готовы создать свой первый DataFrame!
Делать больше с Python
Теперь, когда у вас есть возможность читать данные из таблиц Excel, вы можете применять программирование на Python любым способом, который выберете. Работа с Pandas — это простой способ для опытных программистов на Python работать с данными, хранящимися в книгах Excel.
Простота использования Python для анализа и манипулирования данными является одной из многих причин, почему Python является языком программирования будущего
Есть два файла.
При настройке запроса Power Query на эти файлы "Из папки" запрос не формируется.
По отдельности запрос на файлики формируется нормально.
Файлы не могу приложить из-за их размера.
В чем может быть проблема?
Есть два файла.
При настройке запроса Power Query на эти файлы "Из папки" запрос не формируется.
По отдельности запрос на файлики формируется нормально.
Файлы не могу приложить из-за их размера.
В чем может быть проблема? Viper25
По отдельности запрос на файлики формируется нормально.
Файлы не могу приложить из-за их размера.
В чем может быть проблема? Автор - Viper25
Дата добавления - 19.09.2016 в 17:51
может быть попробуете все таки удалить например из файлов все кроме 1-2 строк или еще как то(архивом например) приложить файл. на данный момент не очень понятно, что там не так
может быть попробуете все таки удалить например из файлов все кроме 1-2 строк или еще как то(архивом например) приложить файл. на данный момент не очень понятно, что там не так Szekerfehesvar
Viper25, возможно у файлов разная структура (количество листов, их названия)
попробуйте такой запрос
[vba]
let
Папка = Folder.Files("C:\folder"),
Файлы = Table.SelectRows(
Папка,
each
Text.StartsWith(_[Extension], ".xls") and
not Text.StartsWith(_[Name], "~")
),
Книги = Table.CombineColumns(
Table.SelectColumns(
Table.AddColumn(
Файлы,
"Workbook",
each
Table.SelectRows(
Excel.Workbook([Content]),
each
_[Kind] = "Sheet"
)
),
),
,
Combiner.CombineTextByDelimiter(
"",
QuoteStyle.None
),
"File Path"
),
Листы = Table.ExpandTableColumn(
Книги,
"Workbook",
)
in
Листы
Viper25, возможно у файлов разная структура (количество листов, их названия)
попробуйте такой запрос
[vba]
let
Папка = Folder.Files("C:\folder"),
Файлы = Table.SelectRows(
Папка,
each
Text.StartsWith(_[Extension], ".xls") and
not Text.StartsWith(_[Name], "~")
),
Книги = Table.CombineColumns(
Table.SelectColumns(
Table.AddColumn(
Файлы,
"Workbook",
each
Table.SelectRows(
Excel.Workbook([Content]),
each
_[Kind] = "Sheet"
)
),
),
,
Combiner.CombineTextByDelimiter(
"",
QuoteStyle.None
),
"File Path"
),
Листы = Table.ExpandTableColumn(
Книги,
"Workbook",
)
in
Листы
let
Папка = Folder.Files("C:\folder"),
Файлы = Table.SelectRows(
Папка,
each
Text.StartsWith(_[Extension], ".xls") and
not Text.StartsWith(_[Name], "~")
),
Книги = Table.CombineColumns(
Table.SelectColumns(
Table.AddColumn(
Файлы,
"Workbook",
each
Table.SelectRows(
Excel.Workbook([Content]),
each
_[Kind] = "Sheet"
)
),
),
,
Combiner.CombineTextByDelimiter(
"",
QuoteStyle.None
),
"File Path"
),
Листы = Table.ExpandTableColumn(
Книги,
"Workbook",
)
in
Листы
пробуйте такой вариант
путь к папке для запроса берется из A1, при выделении этой ячейки открывается диалог для выбора папки
Если в папке будут файлы .xls, запрос выдаст ошибку
пробуйте такой вариант
путь к папке для запроса берется из A1, при выделении этой ячейки открывается диалог для выбора папки
Если в папке будут файлы .xls, запрос выдаст ошибку
Хоть головой об стену.
Не формируется запрос "Из папки" на эти два файла.
Не могу понять что с ними.
ХЕЛП.
Хоть головой об стену.
Не формируется запрос "Из папки" на эти два файла.
Не могу понять что с ними.
ХЕЛП. Viper25
Viper25, дело в том, что XLSX - это по сути архив, содержащий определенный набор xml файлов
PQ функция [vba]
[/vba] (она выполняется при нажатии на кнопочку с двумя стрелками вниз) не может корректно обработать данный тип файлов, и из-за этого на следующем шаге [vba]
[/vba] вываливается ошибка
Да и при формате xls не будет корректного результата
Мой файл из предыдущего поста пробовали?
Viper25, дело в том, что XLSX - это по сути архив, содержащий определенный набор xml файлов
PQ функция [vba]
[/vba] (она выполняется при нажатии на кнопочку с двумя стрелками вниз) не может корректно обработать данный тип файлов, и из-за этого на следующем шаге [vba]
[/vba] вываливается ошибка
Да и при формате xls не будет корректного результата
Мой файл из предыдущего поста пробовали? krosav4ig
[/vba] (она выполняется при нажатии на кнопочку с двумя стрелками вниз) не может корректно обработать данный тип файлов, и из-за этого на следующем шаге [vba]
[/vba] вываливается ошибка
Да и при формате xls не будет корректного результата
Мой файл из предыдущего поста пробовали? Автор - krosav4ig
Дата добавления - 22.09.2016 в 14:37
Как Вы это сделали?
Не могу понять почему при стандартном создании запроса "Из папки" выдается ошибка, а в Вашем запросе, что фактически тоже "Из папки", ошибки нет.
Как Вы это сделали?
Не могу понять почему при стандартном создании запроса "Из папки" выдается ошибка, а в Вашем запросе, что фактически тоже "Из папки", ошибки нет. Viper25
Как Вы это сделали?
Не могу понять почему при стандартном создании запроса "Из папки" выдается ошибка, а в Вашем запросе, что фактически тоже "Из папки", ошибки нет. Автор - Viper25
Дата добавления - 22.09.2016 в 14:57
Столкнулся с тем же вопросом (поисковик выдаёт эту тему) - насколько я понял всё дело в том что это путь для добавления txt или csv файлов. При добавлении файлов Excel надо в явном виде указать что импортируемые файлы имеют эту структуру.
Вместо колонки "binary" надо добавить пользовательский столбец с формулой
Столкнулся с тем же вопросом (поисковик выдаёт эту тему) - насколько я понял всё дело в том что это путь для добавления txt или csv файлов. При добавлении файлов Excel надо в явном виде указать что импортируемые файлы имеют эту структуру.
Вместо колонки "binary" надо добавить пользовательский столбец с формулой
Viper25, запоздалый ответ, но пусть он будет тут.
Все дело в том что когда ты указываешь папку откуда нужно взять файлы эксель, то он забирает все файлы. При этом в некторый момент, могут создавать временные файлы в этой же папке (например открыт какой то файл). И запрос автоматом забирает себе в перечень файлов и этот временный файл. Скорее всего там создавался временный файл экселя, начинается наименование файла с ~. И ввиду такого названия он автоматически становился первым в списке. Т.е. тебе нужно отфильтровать таблицу с перечнем файлов до того как эти файлы начнут считываться. Делается это в расширенном редакторе.
В Power Bi есть кое какая хитрая система вспомогательных запросов, ты о них не знаешь, но они создаются автоматически и в ходе работы ссылаются на них, так вот этот автоматический запрос также придется редактировать и ставить дополнительный фильтр на исключение временных файлов.
Viper25, запоздалый ответ, но пусть он будет тут.
Все дело в том что когда ты указываешь папку откуда нужно взять файлы эксель, то он забирает все файлы. При этом в некторый момент, могут создавать временные файлы в этой же папке (например открыт какой то файл). И запрос автоматом забирает себе в перечень файлов и этот временный файл. Скорее всего там создавался временный файл экселя, начинается наименование файла с ~. И ввиду такого названия он автоматически становился первым в списке. Т.е. тебе нужно отфильтровать таблицу с перечнем файлов до того как эти файлы начнут считываться. Делается это в расширенном редакторе.
В Power Bi есть кое какая хитрая система вспомогательных запросов, ты о них не знаешь, но они создаются автоматически и в ходе работы ссылаются на них, так вот этот автоматический запрос также придется редактировать и ставить дополнительный фильтр на исключение временных файлов. telnoff
Здравствуйте!
Помогите с такой проблемой, при создании запроса из папки, не выводит окно с навигатором, при этом загружает только один файл, т.е. в дальнейшем нет возможности соединить данные всех файлов в одну таблицу. Данный компьютер корпоративный и что либо самостоятельно переустановить невозможно. На домашнем экспериментировал, все получается. Офис установлен на корпоративном и домашнем 2016. При обращении к ИТ специалистам, говорят что Power Qwery установлен корректно, нужно где то отжать какую-нибудь галочку, но при это они не компетентны в данной программе. Где находится эта галочка или как сделать настройку, что бы выдавало окно Навигатор?
Здравствуйте!
Помогите с такой проблемой, при создании запроса из папки, не выводит окно с навигатором, при этом загружает только один файл, т.е. в дальнейшем нет возможности соединить данные всех файлов в одну таблицу. Данный компьютер корпоративный и что либо самостоятельно переустановить невозможно. На домашнем экспериментировал, все получается. Офис установлен на корпоративном и домашнем 2016. При обращении к ИТ специалистам, говорят что Power Qwery установлен корректно, нужно где то отжать какую-нибудь галочку, но при это они не компетентны в данной программе. Где находится эта галочка или как сделать настройку, что бы выдавало окно Навигатор? Max_828898
В поисках пути отношения
Вы можете увидеть путь до таблицы используя:
но что насчет обратного процесса, получения названия объекта из пути до него? Существует функция pg_filenode_relation, которая кажется подходящей для этого… но чтобы ее использовать, необходимо быть подключенным к конкретной базе данных, к которой относится этот файл, что подразумевает знание этой связи.
Структура пути до файла
Вот каким образом можно определить путь до таблиц и баз данных в современной версии PostgreSQL. (Более старые версии используют другой формат, про который можно почитать здесь).
Имеется 3 основных варианта пути:
- Для файлов в табличном пространстве по умолчанию, base/database_oid/filenode id for the relation
- Для файлов из прочих табличных пространств: pg_tblspc / tablespace_oid / tablespace_version_subdir / database_oid / filenode id отношения
- Для общих отношений: global/filenode id отношения
Общие отношения будут обсуждаться в конце. Для первых же двух вариантов, которые являются самыми распространенными, с которыми вы будете чаще всего сталкиваться, последняя часть пути идентична, oid базы и oid отношения.
Обратите внимание, я употребил формулировку "filenode id отношения", а не "oid отношения". Это связано с тем, что PostgreSQL имеет карту relfilenode в файле с именем pg_relfilenode.map для каждой базы данных/табличного пространства. Имена файлов таблиц вовсе не обязательно совпадают с их oid'ами из pg_class, и они могут измениться после запуска VACUUM FULL, TRUNCATE и прочих. К примеру:
Итак. Как превратить этот путь обратно в имя отношения?
Oid'ы базы данных и filenode ids отношения
Предположим, Вы получили ошибку из начала этой статьи. Ее можно разбить на несколько частей:
- base: в табличном пространстве по умолчанию
- 16396: в базе данных с oid'ом 16396
- 3720450 filenode id для таблицы с oid'ом 3720450
Определение базы данных по oid
Во-первых, необходимо подключиться к любой базе данных в этом PostgreSQl процессе и выполнить:
(или любой другой oid базы, который вы имеете). Это вернет Вам имя базы данных.
После этого необходимо подключиться к этой базе.
Обратное преобразование relfilenodes на 9.4 версии
Если Вы используете версию 9.4, или более свежую, то для Вас следующая часть проста:
(0 означает «табличное пространство по умолчанию»)
Эта функция выполняет обратное преобразование relfilenode за вас. Таким образом, она просто покажет Вам имя таблицы. Для него не будет показана связь с какой-то схемой, если полученное имя таблицы принадлежит текущему search_path; Можно использовать SET search_path = ''; перед выполнением функции, для того, чтобы был указан путь вплоть до схемы.
Вы должны быть подключены к правильной базе данных, или будет получен неправильный ответ, либо вообще ответ не будет получен.
Обратное преобразование relfilenodes на 9.3 версии
Если вы используете версию 9.3, или старее, необходимо подключиться к базе данных, в которой находится таблица и выполнить следующий запрос к pg_class:
(или любой другой полученный relfilenode id таблицы).
Это расскажет Вам о том, к какой таблице относится эта ошибка.
Нет результатов?
Что ж, обычно это помогает.
Relfilenode также может быть нулем, это в свою очередь означает, что файл расположен посредством pg_relfilenode.map. Это является типичным сценарием для общих и некоторых системных каталогов, их индексов, TOAST таблиц и т.д. К примеру, это могут быть pg_database, pg_class и pg_proc.
Что насчет схемы?
Вы обратили внимание, что схема (пространство имен) не фигурирует в пути?
В PostgreSQL схемы является только пространством имен внутри базы данных. Они не имеют никакого влияния на то, где физически хранятся таблицы на диске.
Другие пути табличных пространств
Недавний случай, с которым я столкнулся, был следующей ошибкой:
Это не табличное пространство по умолчанию, так как путь начинается с pg_tblspc.
Сам процесс нахождения таблицы на самом деле тот же. Можно проигнорировать pg_tblspc/nnn/PG_n.n_nnnnnn/ часть и сфокусироваться сразу на database_oid/relation_oid, как описано выше для случаев с табличным пространством по умолчанию. Для этого стоит понимать что означает путь.
Таким образом текст ошибки разбивается на следующие части:
- pg_tblspc: это не табличное пространство по умолчанию
- 16709: это табличное пространство с oid'ом 16709
- PG_9.3_201306121: используется PostgreSQL 9.3 с версией каталога 201306121.
- 16499: база данных с oid'ом 16499
- 19401 таблица с relfilenode id 19401
Так что насчет части с табличным пространством?
pg_tblspc является директорией в директории данных PostgreSQL, которая содержит в себе символьные ссылки ко всем положениям табличных пространств (или на NTFS, точки соединения для них). Каждая символьная ссылка названа в честь oid табличного пространства. Именно так PostgreSQL находит табличные пространства. SQL команды к табличным пространствам оперируют этими ссылками.
Oid относится к pg_tablespace записи для табличного пространства, как видно из:
Внутри директории табличного пространства, имеется еще одна директория, имеющая название, соответствующее версии PostgreSQL. Оно статично для этой версии и единственное применение этому — это множественный доступ нескольких PostgreSQL процессов к одному табличному пространству, например, во время pg_upgrade. Как правило, имеется только одна запись.
В целом же, структура та же как и для base/ путей — сначала oid базы данных, потом oid отношения.
Глобальные (общие) таблицы
Имеется еще третья категория ошибок, в случае если Вы ее наблюдаете, то Вы определенно в беде. PostgreSQL имеет общие каталоги — таблицы, которые имеют одинаковое содержимое в каждой базе данных. Они обитают в специальном табличном пространстве с relfilenode id 16709.
Пути к ним начинаются с global вместо base и у них отсутствует компонент с oid'ом базы данных.
Общие каталоги не отмечены relfilenode в pg_class. То есть Вы не сможете посмотреть, к примеру, pg_database из pg_class. pg_filenode_relation возвращает null, независимо от того, вызывать ли его с oid'ом табличного пространства по умолчанию, или же с oid'ом глобального табличного пространства 1664.
Выяснение этого является темой для последующей статьи с разобранными связями.
Конечно же, если вы испытываете проблемы с общими каталогами, вы, вероятнее всего, не сможете в принципе запустить базу данных.
Имея дело с повреждениями
Повреждения базы данных не должно случаться. Но оно может произойти в любом случае. Это могут быть проблемы с железом, баги ядра, или файловой системы, ССД, которые врут о совершении надежных дисковых приливах, глючные сети хранения данных, ну и конечно же баги самого PostgreSQL. Если Вы подозреваете повреждение базы данных, перед тем как что либо предпринять, прочтите и действуйте по советам с вики странички о повреждениях.
Внутренности
Чтобы увидеть как все это работает, запустите макрос relpathbackend в src/include/common/relpath.h. Он вызывает GetRelationPath в src/common/relpath.c.
Написание скрипта Python
Теперь, когда у вас есть выбор текстового редактора, начинается самое интересное. Мы собираемся собрать вместе Python и нашу рабочую книгу Cars для создания Pandas DataFrame.
Запуск скрипта Python
Откройте свой терминал или командную строку и перейдите в каталог, в котором находится ваш скрипт. В этом случае у меня есть «Script.py», расположенный на рабочем столе. Чтобы выполнить скрипт, используйте команду python, за которой следует файл скрипта:
Python вытянет данные из «Cars.xlsx» в ваш новый DataFrame и распечатает DataFrame в терминал!
Пристальный взгляд на объект DataFrame
На первый взгляд, DataFrame выглядит очень похоже на обычную таблицу Excel. В результате Pandas DataFrames легко интерпретировать.
Ваши заголовки помечены в верхней части набора данных, и Python заполнил строки всей вашей информацией, прочитанной из книги «Cars.xlsx».
Обратите внимание на крайний левый столбец, индекс начинается с 0 и нумеруется. Pandas будет применять этот индекс к вашему DataFrame по умолчанию, что может быть полезно в некоторых случаях. Если вы не хотите, чтобы этот индекс генерировался, вы можете добавить дополнительный аргумент в ваш код:
Установка аргумента «index» в значение False приведет к удалению столбца индекса, в результате чего останутся только ваши данные Excel.
Читайте также: