Ciao, non scrivo su questo forum da una vita!!!
E vedo con piacere che con gli anni é rimasto una risorsa quasi infinita per chi cerca aiuto.
Ma veniamo al dunque.
Ecco il mio problema:
io voglio aprire un file excel, leggere i dati su alcune colonne, salvarli in una matrice in python, chiudere il file e lavorare con la matrice.
Solo che riscontro un problema se chiudo il file prima di leggere la matrice, nonostante il processo di lettura file dovrebbe giá essere finito, e i dati giá acquisiti.
Vi posto una versione semplificata della funzione inclusa nel mio programma:
codice:
import win32com.client
from win32com.client import constants, Dispatch
xlApp=win32com.client.Dispatch("excel.Application")
xlDoc = xlApp.Workbooks.Open('Z:\Data\python scripts\exceptions.xls')
sheet = xlDoc.Sheets(1)
val=sheet.Range("a1")
xlDoc.close
print val
e questo é l´errore che ottengo:
codice:
File "C:\PROGRA~1\PHYTON~1\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "Z:\Data\python scripts\prove_exl.py", line 12, in ?
print val
File "C:\PROGRA~1\PHYTON~1\Lib\site-packages\win32com\client\dynamic.py", line 180, in __str__
return str(self.__call__())
File "C:\PROGRA~1\PHYTON~1\Lib\site-packages\win32com\client\dynamic.py", line 165, in __call__
return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None)
com_error: (-2146827864, 'OLE error 0x800a01a8', None, None)
Se invece lascio aperto il file fino alla fine, tutto funziona regolarmente.
(ho lo stesso errore anche usando 'xlApp.Quit()' anzi che 'xlDoc.close')
Grazie
EDIT: Dimenticavo... Quando chiudo excel da python il processo excel.exe rimane attivo. C´é un modo per chiuderlo in modo definitivo e non solo apparente?