powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Python+EXCEL
4 сообщений из 4, страница 1 из 1
Python+EXCEL
    #35401992
AntonSlepnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь писать в текущий активный лист Excel в заданную ячейку строку посредством Thread-а. Вылетает сообщение об ошибке, которое без поллитра не поймешь..

Кто-нибудь знает, что за ошибка и как устранить?

скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import sys,  time
import threading
import pythoncom
from win32com.client import Dispatch

class coterwriter(threading.Thread):
    def __init__(self,i):
        threading.Thread.__init__(self)
        self.xlApp = Dispatch('Excel.Application')
        self.xlApp.ActiveWorkbook.ActiveSheet.Cells( 1 , 1 ).Value = "blablabla"
    def put_mark(self,mark):
        self.xlApp.ActiveWorkbook.ActiveSheet.Cells( 1 , 1 ).Value = mark
    def run(self):
        self.put_mark("blablabla")
       
a = coterwriter( 1 )
a.start()
...
Рейтинг: 0 / 0
Python+EXCEL
    #35402317
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибку в студию! Я за поллитрой..
...
Рейтинг: 0 / 0
Python+EXCEL
    #35402328
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, рискну предположить, что сначала надо ActiveWorkbook заполучить, написав что-то типа Workbooks.Add(..)
...
Рейтинг: 0 / 0
Python+EXCEL
    #35402436
AntonSlepnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, эксель уже открыт.

Я разобрался, напишу для тех, кто тоже может столкнуться:

НЕ РАБОТАЕТ:
import sys, time
import threading
import pythoncom
from win32com.client import Dispatch

class coterwriter(threading.Thread):
def __init__(self,i):
threading.Thread.__init__(self)
self.xlApp = Dispatch('Excel.Application')
self.xlApp.ActiveWorkbook.ActiveSheet.Cells(1,1).Value = "blablabla"
def put_mark(self,mark):
self.xlApp.ActiveWorkbook.ActiveSheet.Cells(1,1).Value = mark
def run(self):
self.put_mark("blablabla")

a = coterwriter(1)
a.start()


РАБОТАЕТ:
import sys, time
import threading
import pythoncom
from win32com.client import Dispatch

class coterwriter(threading.Thread):
def __init__(self,i):
threading.Thread.__init__(self)
def put_mark(self,mark):
self.xlApp.ActiveWorkbook.ActiveSheet.Cells(1,1).Value = mark
def run(self):
pythoncom.CoInitialize()
try:
self.xlApp = Dispatch('Excel.Application')
self.xlApp.ActiveWorkbook.ActiveSheet.Cells(1,1).Value = "blablabla"
self.put_mark("blablabla")
finally:
pythoncom.CoUninitialize()

a = coterwriter(1)
a.start()


разницу предлагаю найти читателю:)

COM хитро взаимодействует с потоками - не дает себя трогать всем и каждому..
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Python+EXCEL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]