• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Пакетная выгрузка спецификаций в эксель.

Автор Kate JSTR, 10.10.15, 18:19:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Kate JSTR

Здравствуйте, возможно ли с помощью API организовать такую работу, т е есть много файлов формата *.spw нужно сохранить в xlsx, может кто уже это делал?

Vitalij Lysanov


Есть решение в области управления курсором и программного нажатия клавиш.
Время на одну спецификацию 4 секунды.
С учетом информации по адресу

http://forum.ascon.ru/index.php/topic,28413.msg215905/topicseen.html#msg215905

особенности программы:
#Получаем список файлов в переменную files
files = os.listdir("E:/Documents and Settings\Admin\Мои документы/")

#Фильтруем список
images = filter(lambda x: x.endswith('.spw'), files)




def ang_rus(): # Переключение раскладки клавиатуры
    ctypes.windll.user32.keybd_event(17, 0, 0, 0) #'Hажимаем
    time.sleep(tmin)
    ctypes.windll.user32.keybd_event(16, 0, 0, 0) #'Hажимаем
    time.sleep(tmin)
    ctypes.windll.user32.keybd_event(16, 0, 0x0002, 0) #'
    time.sleep(tmin)
    ctypes.windll.user32.keybd_event(17, 0, 0x0002, 0) #
    time.sleep(tmin)


В приложении код python 3.4 и образцы для поиска (bmp) ( Компас 14 ) 
Исходная клавиатура английская, на каждую русскую букву переключает клавиатуру и обратно, поэтому русские буквы вводятся медленнее. При желании можно захватом определить раскладку и поставить нужную. 
+ Благодарностей: 1

Slaviation

#2
Вариант в прицепе

Нужен установленный Компас, библиотека к Компас \Libs\komlib.rtw ("Сервисные инструменты"), Excel, Python и расширение к нему PyWin32

для x86
https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download

для x64
https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe/download

Kate JSTR

Цитата: Vitalij Lysanov от 12.10.15, 12:35:45
Есть решение в области управления курсором и программного нажатия клавиш.


Интересное решение), спасибо.
А можно ли реализовать более популярными средствами, например EXCEL VBA, как-то эмулировать действия клавиатуры?

Slaviation

[Не нужно бояться питона. Для поиска быстрых решений "на коленке" он самое-то.
ЦитироватьА можно ли реализовать более популярными средствами, например EXCEL VBA
Специалисты по рейтингам ЯП не согласны :)
http://ain.ua/2015/04/22/577015

Зачем эмулировать действия клавиатуры, если Excel и Компас имеют API функции?
Если неохота использовать API функции обоих приложений, то уважаемый Slaviation уже показывал, используйте конвертер который есть в библиотеке "Сервисные инструменты", которая идёт с базовой конфигурацией, а какими популярными средствами реализовать - решать Вам.
+ Благодарностей: 1

Slaviation

Установил EXCEL из пакета MSOFFICE 2003, доустановил к Компасу komlib.rtw, запустил тест. Результат положительный.

Вират Лакх

А если спецификация на листе чертежа?

Slaviation

ЦитироватьА если спецификация на листе чертежа
Тогда искать другое решение. Исходное требование - *.spw -> Excel

Vin

Цитата: Вират Лакх от 28.10.15, 05:04:35
А если спецификация на листе чертежа?
Тогда в формат pdf. А из него в Excel. Пробовал, работает

Вират Лакх

Можете пояснить? Попробовал на WPS Spreadsheets - там надо выбирать тип данных, трали-вали... В итоге табличку не увидел.

Vin

Цитата: Вират Лакх от 23.12.15, 04:46:07
Можете пояснить? Попробовал на WPS Spreadsheets - там надо выбирать тип данных, трали-вали... В итоге табличку не увидел.
Кому адресована просьба? :)

Вират Лакх

Vin, Вам адресована. По последнему сообщению.

Vin

#13
Цитата: Вират Лакх от 23.12.15, 09:36:14
Vin, Вам адресована. По последнему сообщению.
Делал следующим образом:
1 чертёж в формате cdw, с таблицей на борту, сохранял в формате pdf;
2 программой Adobe Acrobat PRO пересохранял как Рабочая книга Microsoft Excel.
Параметры сохранения в pdf в Компасе не менял.

П.С. Перед сохранением в pdf, желательно разрушить и удалить основную надпись.
П.С.С.Можно точно таким же способом передать таблицы в Word.
Конечно, про пакетную обработку чертежей в данном случае речи и быть не может.
Тут придётся работать с каждым конкретным файлом персонально.
+ Благодарностей: 1

bbv62

Цитата: Slaviation от 15.10.15, 08:54:18запустил тест. Результат положительный.
Если кто бывает здесь: Как запускать этот скрипт?
Питон установлен, komlib.rtw установлено, Компас запущен.
Пытался запускать и в cmd от админа, и просто. И в папке со спецификациями, и из папки Питона.
Не растёт трава зимою...
По 50+ спецификаций по одной перегонять в Ёксель - то ещё удовольствие.

Валерий Изранов

Цитата: bbv62 от 03.10.23, 23:39:10По 50+ спецификаций по одной перегонять в Ёксель
А в чем преимущество Спецификации в Excel? Как ее дальше использовать?

Nipal

Цитата: Валерий Изранов от 04.10.23, 06:59:32А в чем преимущество Спецификации в Excel? Как ее дальше использовать?
Например в бухгалтерии.

Валерий Изранов


Вират Лакх

Переписанный под python 3
import glob, pythoncom, tkinter.filedialog as tkfd
from win32com.client import gencache

directory = tkfd.askdirectory(title = "Выбор каталога")
directory = directory.replace('/', '\\')
files = glob.glob(f'{directory}\\**\\*.spw', recursive = True)

module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
const  = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
app = module.IApplication(pythoncom.connect('Kompas.Application.7'))
docs = app.Documents

app.HideMessage = const.ksHideMessageYes

for fil in files:
   doc = docs.Open(fil, True, True)
   doc.SaveAs(fil + ".xls")
   doc.Close(const.kdDoNotSaveChanges)

app.HideMessage = const.ksShowMessage

Валерий Изранов

Вират Лакх, на словах: что делает этот код?