python3.4在windows系統上使用xlwings操作Excel出現FullName錯誤解決方案
阿新 • • 發佈:2018-12-22
python語言雖好,也號稱跨平臺,由於python使用時,往往需要很多內褲,東一個西一個,就像犀利哥身上的衣服,打滿了補丁,常常遇到各種莫名其妙的八哥,很是令人頭疼。最近我需要用python操作excel,聽說xlwings可以通過python讓excel插上雙翼,據說比VBA還要簡易,我看了一下xlwings的語法,確實比VBA要簡潔許多,於是開始試用,其它各項操作還好,但是遇到一個非常重要的功能不能正常使用,那就是無法開啟一個已經存在的Excel表,必須手工開啟後,然後才能通過python來動態操作。按照xlwings官方文件,本來執行xlwings.Book(r"C:/LocalExcelFile.xlsx")應該可以開啟本地已經存在的這個工作簿的,但是實際上我使用時一直報錯:
就是這個引數錯誤 AttributeError: 'NoneType' object has no attribute 'FullName'
本來在一臺舊的windows xp機器上使用,我以為是xp系統太舊,換到windows 10的機器上使用還是同樣錯誤,由於寫的python程式需要用到舊的window xp機器上,所以猜測是不是python3.4版本太舊的想法也暫時放棄。
好在手工開啟excel表格後是可以操作的,但是這樣不利於自動化無人監守。
於是想到用程式實現自動開啟exel。剛好有pywin32的win32com.client類庫可以使用,呵呵,勤換內褲,免除蟲咬。
可以先用程式開啟exel表,然後再使用xlwings操作,這樣就無需手動打開了,解放雙手,好爽!
from win32com.client import Dispatch import win32com.client import time import xlwings as xw # 獲取excel 物件 excel = win32com.client.Dispatch('Excel.Application') """ 0代表隱藏物件,但可以通過選單再顯示 -1代表顯示物件 2代表隱藏物件,但不可以通過選單顯示,只能通過VBA修改為顯示狀態 """ excel.Visible = -1 myBook=excel.Workbooks.Open("F:/test.xls") print("excel已經在後臺開啟") xlBook=xw.Book("F:/test.xls") cellValue=xlBook.sheets[0].range("A1").value print("第一個單元格值:",cellValue) #暫停60秒 time.sleep(60) myBook.save myBook.close print("excel已關閉")