Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [python] Problema chiusura file excel

    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?

  2. #2
    ok...

    per la semplice funzione di prima ho risolto.
    Basta fare uno ' str(val)' prima di chiudere il file.

    Rimane il problema di chiudere Excel in modo definitivo. qualche idea?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.