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?