python用win32com對Excel的一些操作

3KAI發表於2017-04-19

最近接的專案結果輸出excel對格式要求特別高,所以懶得找了,直接用win32操作了。

Python操作Excel的庫有不少,但是各有優缺點,沒有完美的,這裡其他的幾個庫都不多說了,僅僅列下win32的一些學習記錄。

直接上程式碼:

 

def win32Read(filepath, passWords):
    #===========================================================================
    # win32實現Excel檔案讀取
    # Just An Example, Do Not Use It.
    #===========================================================================
    rst = {}
    try:
        pythoncom.CoInitialize ()
        
        xlsApp = win32com.client.DispatchEx('Excel.Application')
        #禁用事件
        xlsApp.EnableEvents = False
        #禁止彈窗
        xlsApp.DisplayAlerts = False
        
        #注: 當使用密碼時,前邊的幾個引數都必須存在
        wb = xlsApp.Workbooks.Open(filepath,UpdateLinks=3,ReadOnly=False,Format = None, Password=passWords)
       
        # 遮蔽彈窗
        wb.Checkcompatibility = False
        #1:開啟巨集,2:禁用巨集
        wb.RunAutoMacros(2)
        
        for sheetObj in wb.Worksheets:
            datatupe = sheetObj.UsedRange.Value
            if not datatupe:
                continue
            else:
                datatupe = [list(linedata) for linedata in datatupe]
            rst[sheetObj.name] = datatupe
        return rst
    except Exception,e:
        print unicode(e)
        # 具體處理看情況
    finally:
        try:
            xlsApp.DisplayAlerts = False
            wb.Close(SaveChange = False)
            xlsApp.DisplayAlerts = True
        except:
            pass
        try:
            xlsApp.Application.Quit()
            del xlsApp
        except:
            pass
        pythoncom.CoUninitialize ()

這個函式主要用來讀取excel並輸出字典,對合並單元格的部分沒有處理,這裡僅僅對套路的部分做個記錄,實際上並不實用,後續記錄更多的操作。
 

 

相關文章