1. 程式人生 > >python3.4在windows系統上使用xlwings操作Excel出現FullName錯誤解決方案

python3.4在windows系統上使用xlwings操作Excel出現FullName錯誤解決方案

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已關閉")