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")应该可以打开本地已经存在的这个工作簿的,但是实际上我使用时一直报错:

python3.4在windows系统上使用xlwings操作Excel出现FullName错误解决方案_第1张图片


就是这个参数错误 AttributeError: 'NoneType' object has no attribute 'FullName'

本来在一台旧的windows xp机器上使用,我以为是xp系统太旧,换到windows 10的机器上使用还是同样错误,由于写的python程序需要用到旧的window xp机器上,所以猜测是不是python3.4版本太旧的想法也暂时放弃。


好在手工打开excel表格后是可以操作的,但是这样不利于自动化无人监守。

于是想到用程序实现自动打开exel。刚好有pywin32的win32com.client类库可以使用,呵呵,勤换内裤,免除虫咬。

可以先用程序打开exel表,然后再使用xlwings操作,这样就无需手动打开了,解放双手,好爽!

python3.4在windows系统上使用xlwings操作Excel出现FullName错误解决方案_第2张图片

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已关闭")


你可能感兴趣的:(数据库,python)