Пока не знаю, будет ли отдельный проект по автоматизации для Python, но те, кто пользуется BedvitCOM.dll, могут использовать её в своем проекте и на Python (в т.ч. и для Excel, используя xlrd, xlwt, xlutils или openpyxl и т.д.) Регистрируем, пользуемся.
Код
# использование BedvitCOM-DLL
from win32com import client
bCOM = client.DispatchEx('BedvitCOM.BignumArithmeticInteger')
bCOM.Factorial (0, 1024)
print(bCOM.Bignum (0))
Все строковые функции работают, работает длинная арифметика. Будет ли работать функционал меняющий данные на месте, массивы (сортировка, фильтр) - непонятно, нужно тестировать. Сейчас хочу попробовать подключить фильтр, протестировать, к примеру на задаче на фильтрацию по 2000 условиям. Пока вся сложность в массивах.
bedvit, прокачка пайтона однозначно нужна. Это массовый продукт, как раз заточенный на использование библиотек.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
В Python весь функционал BedvitCOM.dll - работает! Вот тест на задаче фильтрации по 2 тыс. условий
Код
from win32com import client
bCOMvba = client.DispatchEx('BedvitCOM.VBA')
print(bCOMvba.version())
from openpyxl import load_workbook
import time
t1=time.time()
filename1 = r'C:\Удаление_стоп-слов_Python3.xlsx'
wb = load_workbook(filename1, read_only=False)
sheet1 = wb['Данные']
sheet2 = wb['Стоп-слова']
sheet3 = wb['Лист1']
data = list(sheet1.values)
dataF = list(sheet2.values)
t2=time.time()
resCom=bCOMvba.ArrayFilterV(data, dataF, 0)
t3=time.time()
for i, statN in enumerate(resCom[0]):
sheet3.cell(row=i+1, column=1).value = statN[0]
wb.save(filename1)
t4=time.time()
print("Загрузка файла и данных",t2-t1)
print("Фильтрация ArrayFilterV",t3-t2)
print("Загрузка на лист Excel и сохранение файла",t4-t3)
print("Итого",t4-t1)
BedvitCOM.dll_v3.0.221019.001314_x64_Release
Загрузка файла и данных, сек 15.294197797775269 Фильтрация ArrayFilterV, сек 4.903175354003906 Загрузка на лист Excel и сохранение файла, сек 18.162644147872925 Итого, сек 38.3600172996521
Итого библиотека фильтрует данные и выводит в кортеж за 4.9 сек. Остальное время на открытие/закрытие файла и чтение/запись данных. Возможно опытные Пайтонисты подскажут как сократить это время. Читать из уже открытой книги или возможно датафреймы будут быстрее и т.д.
Файл пример прилагаю (основной массив нужно дополнить из файла примера, т.к. файл с полным массивом не пролезает по размеру). Собственно это тот же файл, как в первоначальной теме, только без заголовков (для простоты кода Python в части получения первоначального массива)