Страницы: Пред. 1 2 3 4 5 6 След.
RSS
Удобное внедрение языка программирования "Python" в файл Excel на основе портативной сборки Python, Настроенный файл Excel для удобного вызова скриптов Python из Excel
 
Vladimir Chebykin, Странная позиция у вас... БМВ, как и я до этого, просто хочет ясности, т.к. кроме абсолютно шаблонных, стереотипных ярлыков, автор ничего не сказал, что в первую очередь говорит о том, что он дальше чем "я увидел на сайте, что так можно и нашел вариант, как НЕ хранить скрипт отдельно" не продвинулся.
И вы тоже. Пока только безосновательные разговоры, а это больше про бабушку у подъезда.
Никто не говорит, что автор сделал что-то плохое, просто как можно говорить о том, как это здорово работает без каких-либо тестов и сравнений. И сравнивать нужно, РАЗУМЕЕТСЯ, с VBA. Про библу bedvit'а я сказал просто, как следующий этап сравнения производительности, до которого очень маловероятно дойдёт дело

Вы с автором тут непонятно что выгораживаете, хотя никто и не нападает
Вы говорите, что автомобиль хорош, хотя за рулём ни разу не сидели - это же абсурд
Сделайте всё по инструкции, напишите простой код (только не hello world", а по работе с Excel) и покажите - вот это будет разговор, а пока пустая болтовня ни о чём

Тему давно пора перенести в Курилку
Изменено: Jack Famous - 06.06.2021 09:34:27
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Vladimir Chebykin написал:
Вы считаете, что Вам кто-то что-то здесь должен?
Нет я так не считаю, но
Цитата
Сергей написал:
Удобное внедрение языка программирования "Python" в файл Excel
и далее следует скачайте, потрясите, подкрутите побейте в бубен и у вас удобное окружение, которое не понятно зачем нужно.
По вопросам из тем форума, личку не читаю.
 
Цитата
Jack Famous написал:
ему давно пора перенести в Курилку
Тоже к этому склоняюсь.
 
Сергей, добрый день.
Питон вне моих интересов, но спасибо за предложенное интересное решение с подробным описанием и ссылками.
Встречал запросы на эту тему на форумах без внятных ответов.
По моему, любые альтернативные варианты автоматизации Excel найдут чью-то заинтересованность, насмотря на встроенные возможности (VBA, XLL, JS и т,.п.)
Удачи Вам в развитии решения!
 
Ещё раз подчеркну, что за само исследование и описание возможности - спасибо  :idea:
Хотелось бы, конечно конкретики и сравнении, буду рад посмотреть, если будут  8)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Спасибо большое за поддержку, всем кто поддержал! В своей благодарности я специально не буду указывать имена тех кто поддержал. Чтобы никого не обидеть, ведь, справедливости ради, я получал слова поддержки и от своих критиков (скорее, их правильно называть скептиками).
Цитата
ZVI написал:
По моему, любые альтернативные варианты автоматизации Excel найдут чью-то заинтересованность, несмотря на встроенные возможности (VBA, XLL, JS и т,.п.)
ZVI, добрый день! А разве JavaScript встроен в Excel или вы путаете с Google Sheets?
(Ответьте, пожалуйста, что он туда встроен - обрадуйте меня!)
 
Цитата
БМВ написал:
и далее следует скачайте, потрясите, подкрутите побейте в бубен и у вас удобное окружение, которое не понятно зачем нужно.
Бубен нужен если не установлен Python. Описал процесс его установки лишь по той причине, что не все знают про портативный вариант.
 
Цитата
Сергей написал:
А разве JavaScript встроен в Excel
Для этого есть framework от MS: Excel JavaScript API overview
Пример - Work with worksheets using the Excel JavaScript API
Изменено: ZVI - 06.06.2021 12:11:19
 
Цитата
Сергей написал:
А разве JavaScript встроен в Excel
Немного через костыль, но встроен. Вариант применения.
Вот горшок пустой, он предмет простой...
 
ZVI, Владимир приветствую! Правильно ли я понимаю: Надстройка Office - это веб-приложение. Но с добавлением фрамеворка может работать и с локальными версиями, начиная с Excel 2016? Как это работает?
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, Добрый день, Виталий. Да, правильно понимаете. Как работает? - Медленно и достаточно ограниченно.
Еще и асинхронно, но какие-то методы обхода проблем асинронности там принимались.
Защита кода тоже была условной, когда я это смотрел (несколько лет тому назад).
Изначально там, например, не было быстрого копирования значенией из массива в ячейки, как это встроено в VBA, но по просьбе MVPs была добавлена какая-то неполная альтернитива. Отмечу, что со стороны MS была достаточно опратичная реакция на запросы и замечания MVPs, отвечал и дорабатывл framework автор идеи.
Но меня все это интересовало поверхностно из-за изрядно ограниченной функциональности и скорости кода (в 2 и более раза медленнее, чем VBA).
Если вопрос о том, каким именно образом устроен механизм реализации JS API внутри Excel  и framework-а для взаимодействия с локальной версией Excel, то такая информация мне не попадалась, да и незачем MS ее раскрывать - достаточно описания API.
Вроде в курилке давно была тема о том, что появился JS API.
Изменено: ZVI - 06.06.2021 16:25:11
 
Благодарю, очень полезная информация (как всегда).
Цитата
ZVI написал:
Вроде в курилке давно была тема о том, что появился JS API.
Признаюсь, пропустил. Про веб-версию читал.
Меня интересует тема развития Excel, направление развития, возможности предоставляемые разработчиками (официальными+не официальными).
К сожалению, здесь для меня доступно только материалы в свободном доступе, а этого недостаточно.
Мне представлялась картина что-то, вроде этой (порядок возникновения - не точный) Excel-4.0-Macro-Functions -> VBA -> C API -> Com-Add-In -> VSTO -> JS API ->?
Добавте, что пропустил.
Что из этого поддерживается. Насколько я знаю, пока все, но что развивается, какое направление?

Функционал C API в основном базируется на Excel-4.0, что давно уже как бы забыто, вот все функции(579) и методы (805), которые определены в заголовке файла xlcall.h
Скрытый текст

Кажется много, но не покрывает огромной части СОМ-модели Excel (которую, к примеру может использовать VBA).
Но вместе, с тем начиная с Excel 2013 добавлены асинхронные функции (использовал - интересный вариант для некоторых задумок). Возможно  JS API, это обертка этих функций?
Если С API живо, почему так мало методов (по сравнению с СОМ)? Возможно есть не документируемые С API, которые используются внутренними разработчиками и дают более широкий набор действий по сравнению с текущими.
Что из этого является базовыми API (какая модель), или наиболее близкие к движку Excel? По тестам при обращении к листу, СОМ-модель Excel медленее С АРI (получить, присвоить значение около 30%)
Изменено: bedvit - 06.06.2021 19:17:47
«Бритва Оккама» или «Принцип Калашникова»?
 
Jack Famous, msi2102, БМВ, vikttur, Андрей_26, Юрий М,

у меня к вам предложение – поучаствуйте в тестировании.

Я подготовлю экземпляр Excel cо скриптом Python, а кто-то из вас подготовит его аналог с кодом VBA.
Мы сравним результат по производительности и по удобству.
Мои условия:
Скрытый текст

Изменено: Сергей - 06.06.2021 20:08:54
 
Цитата
Сергей написал:
его аналог с кодом VBA.
А почему не рассматривается PQ?
Изменено: БМВ - 07.06.2021 07:36:34
По вопросам из тем форума, личку не читаю.
 
Сергей, я в деле, но не обещаю .что сегодня будет тест  ;)
Цитата
БМВ: почему не рассматривается PQ?
главное, чтобы запрос поддерживал перебор всех вложенных подпапок  :D Думаю, что автор просто не думал про сравнение с ним, так как это битва кодов всё-таки (я ведь тоже никогда с PQ не сравниваю). Возьмёшься или тёзку моего позовёшь?  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
БМВ написал:
А почему не рассматривается PQ?
А потому что автор сразу подложил медведю свинью в виде
Цитата
Сергей написал:
и ".xls".
Не любит такого PQ.  :D
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
А потому что автор сразу подложил медведю свинью в виде
- Поручик Ржевский, вы негодяй, я вызываю вас на дуэль.
- Хорошо, выбирайте оружие, шпага или пистолет.
- Я выбираю шпагу.
- А я выбираю пистолет.
Goedenavond!
 
Цитата
БМВ написал:
А почему не рассматривается PQ?
Лично мне, PQ как штатное средство экселя, будет интересно оттестировать и в одной упряжке с VBA и в соло и как угодно.
Но PQ разве покажет высокие скорости исполнения?
Было бы интересно и чистый VBA глянуть.
Кстати, у меня есть еще вопрос, который давно меня интересовал - на каких языках, кроме VBA, работают встроенные приблуды в Excel? Я знаю DAX для PP, и язык "М" идет с PQ, а какие языки у Excel для пользователей есть еще? SQL?
Изменено: Сергей - 07.06.2021 10:57:09
 
Цитата
PooHkrd написал:
Не любит такого PQ.

Цитата
PooHkrd написал:
А потому что автор сразу подложил медведю свинью

На самом деле подкладывать свинюку я не думал - я даже не знал про сложности с .xls у PQ.
Но умение работать с разными форматами действительно специально включил в тест.

Я вообще личностно воспринимать ни победу, ни поражение в тестах Python не стану. Я тут ни за что не топлю, ничего не отстаиваю, ничего не теряю, если хотите. Моя награда такая же как и у вас - знание реального положения дела с языками в Excel и общение.
Естественно, я мотивирован отстоять Python, но у меня нет иных душевных вложений в мои ожидания, кроме интереса.
Предлагать заведомо выигрышные методы сравнения не стану, к счастью, они мне не известны.
Разве что оценка по количеству строк кода - она увеличивает шансы Python.
Но мне кажется это объективное требование, ведь Python определенно отжертвовал производительностью ради лаконичности, так как специально разрабатывался под лаконичный код. Это нужно как-то проиллюстрировать тем, кто присматривается к языку. А такие, как я понял, в эту тему заглядывают.
Изменено: Сергей - 07.06.2021 13:32:35
 
Цитата
Сергей: аналог с кодом VBA
Отчёт

PooHkrd,  :D привет, тёзка! Ну преобразуй в "*.xlsx" и сделай свой вариант - мне интересно, да и другим, думаю, тоже
Изменено: Jack Famous - 07.06.2021 12:03:09
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Ну преобразуй в "*.xlsx"
Не, тогда теряется чистота эксперимента, если мы начинаем преобразовывать, то тогда уж можно и xlsx преобразовать в csv, а из текста PQ читает быстрее всего.
Я же не преобразую его силами самого PQ.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd: теряется чистота эксперимента
не соглашусь - на данный момент использование xls ввиду отсутствия у пользователя версии Excel выше 2003 является абсурдом. В таком случае, ни о каком Power Query не может быть и речи. В большинстве случаев файл имеет формат xls  просто потому что "у нас так принято" или файл просто очень древний и копировался миллионы раз с бородатых лет вместо перенесения данных в новый чистый файл
ИМХО тестируй на 12ти файлах из папки NEW и да прибудет с тобой сила  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
В большинстве случаев файл имеет формат xls  просто потому что "у нас так принято" или файл просто очень древний и копировался миллионы раз с бородатых лет вместо перенесения данных в новый чистый файл
или программа экспортирует в него по умолчанию, даже если есть экспорт в xlsx
что касается кода, то возможно не открывая файл, а беря данные через ADO будет шустрее.
но тут мы на количество строк попадем :-)
По вопросам из тем форума, личку не читаю.
 
Jack Famous, ок. Благодарю за конструктивное участие в теме! Сегодня вечером сяду делать свой вариант.

Цитата
Jack Famous написал:
справедливо будет считать строки только основной процедуры (48 строк от "Sub" до "End Sub") и не считать вспомогательные функции
Хорошо.
Цитата
Jack Famous написал:
достаточно просто предоставить ваш вариант кода и время выполнения (просто 2 числа без сложения и сравнивания суммы) - я дам свою оценку и обосную, также, как и остальные
Так не пойдет. Тесты провести в пределах одного компьютера. Файлы разместить в пределах одного диска. Только тогда сравнивать.
 
Цитата
Jack Famous написал:
В большинстве случаев файл имеет формат xls  просто потому что "у нас так принято"
Нет, в основном это экспорт различных программ или сайтов. Работа с такими файлами распространенная ситуация.
Изменено: Сергей - 07.06.2021 14:02:29
 
Цитата
БМВ: не открывая файл, а беря данные через ADO будет шустрее
не для теста, а для себя даже - где посмотреть примеры? У меня тысячи файлов иногда собираются и скорость мне очень важна (ну скорость мне всегда важна, если уж честно). Можно ли при таком подходе заполнять диапазоны объединённых ячеек данными из первой, как при работе с листом?
Цитата
Сергей: Тесты провести в пределах одного компьютера. Файлы разместить в пределах одного диска
тогда вы у себя, пожалуйста  :D
Мой макрос предоставит возможность выбрать папку для поиска всех файлов *.xls* в ней, так что у вас всё получится
Жду результатов  8)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
не соглашусь - на данный момент использование xls ввиду отсутствия у пользователя версии Excel выше 2003 является абсурдом.
xlsb очень распространенный формат для инструментов на формулах, и современный к тому же. Но и с ним у PQ те же самые проблемы. Короче уже мульен раз писал, проблема не в формате, а в том пути который выбрали кодеры PQ для создания коннектора подключающегося к книгам экселя - он был ошибочным.
А по тестированию, найду время на неделе, поучаствую, преобразовывать ничего не буду, буду лепить как есть. Если считает с ошибкой, значит так тому и быть. Но при любых раскладах бинарные форматы + PQ это вселенский тормоз.  :D
Вот горшок пустой, он предмет простой...
 
PooHkrd, потестируй на 12ти xlsx-файлах — это самый чистый результат будет. Ошибок нет и преобразовывать не надо
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
не для теста, а для себя даже - где посмотреть примеры?
так отсюда пляши
Eсли использовать UNION, то можно в рекорд сете получить сразу таблицу консолидированную
Мне лень писать  процедуру фомирующую тупой запрос для Pivot
По вопросам из тем форума, личку не читаю.
 
Сделал, наконец, свой вариант, работающий на Python с запуском из Excel.
Скачать тестовую сборку для 64х операционной системы,  вес - 111 мб
Повторная ссылка на файлы Excel, на которых проводится тестирование

Время исполнения 7 полных секунд.
Длина кода 17 строк (16 на Python, и одна на VBA - фиксируется время запуска):

Результат.xlsx (10.13 КБ)

Код
from pathlib import Path
import pandas as pd
import xlwings as xw
import time

# Сбор в папке sales_data, которая по умолчанию размещена в текущем каталоге:
this_dir = Path(__file__).resolve().parent
parts = []
for path in (this_dir / "sales_data").rglob("[!~$]*.xls*"):
    part = pd.read_excel(path)
    parts.append(part)
df = pd.concat(parts)

# Название столбцов - города. Агрегируются значения с общей датой:
pivot = pd.pivot_table(df, index="transaction_date", columns="store", values="amount", aggfunc="sum")

# Агрегирование по месяцам. Сортировка столбцов по итоговому значению. Cтолбец "Total".
summary = pivot.resample("M").sum()
summary = summary.loc[:, summary.sum().sort_values().index]
summary.loc[:, "Total"] = summary.sum(axis=1)

# Вывод в Excel таблицы и времени окончания работы:
xw.view(summary)
xw.Book.caller().sheets[0]['B14'].value = time.strftime("%H:%M:%S", time.localtime())
Изменено: Сергей - 08.06.2021 06:59:35
Страницы: Пред. 1 2 3 4 5 6 След.
Наверх