python成绩统计系统xlwings_python3.4在windows系统上使用xlwings操作Excel出现FullName错误解决方案...

在尝试使用xlwings在Python3.4上打开已有Excel文件时遇到AttributeError:'NoneType' object has no attribute 'FullName'的错误。尝试在不同Windows系统上运行,问题依旧存在。通过引入pywin32库的Dispatch方法,先手动打开Excel文件,然后使用xlwings进行操作,实现了自动打开Excel并进行处理,避免了手动操作。
摘要由CSDN通过智能技术生成

python语言虽好,也号称跨平台,由于python使用时,往往需要很多内裤,东一个西一个,就像犀利哥身上的衣服,打满了补丁,常常遇到各种莫名其妙的八哥,很是令人头疼。最近我需要用python操作excel,听说xlwings可以通过python让excel插上双翼,据说比VBA还要简易,我看了一下xlwings的语法,确实比VBA要简洁许多,于是开始试用,其它各项操作还好,但是遇到一个非常重要的功能不能正常使用,那就是无法打开一个已经存在的Excel表,必须手工打开后,然后才能通过python来动态操作。按照xlwings官方文档,本来执行xlwings.Book(r"C:/LocalExcelFile.xlsx")应该可以打开本地已经存在的这个工作簿的,但是实际上我使用时一直报错:

2d02f47c1224c0a524532b261abaae51.png

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

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

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

Python使用Win32com库可以操作Windows应用程序,比如Microsoft Word。如果你需要检查一个Word文档中的嵌入式形状(inline_shape)是否是一个特定类型的Excel工作表(例如Excel 2007或更高版本的sheet,其ClassType为"Excel.Sheet.12"),你可以通过编写一段脚本来实现这一点。 以下是一个简单的Python脚本示例,用于检查Word文档中的inline_shape是否为"Excel.Sheet.12"类型,并在检测到时打开它: ```python import win32com.client as win32 def check_and_open_excel_in_word(doc_path): # 初始化Word应用程序 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = True # 如果你想在背后操作可以设置为False # 打开文档 doc = word.Documents.Open(doc_path) # 遍历文档中的每个inline_shape for inline_shape in doc.InlineShapes: # 检查是否为Excel工作表 if inline_shape.ClassType == "Excel.Sheet.12": # 尝试打开嵌入的工作表 try: # 如果成功打开工作表,workbook将不为None workbook = inline_shape.Object print(f"成功打开嵌入的Excel工作表: {workbook.FullName}") except Exception as e: print(f"打开嵌入的Excel工作表时出错: {e}") # 清理并关闭文档和Word应用程序 doc.Close() word.Quit() # 使用示例 # check_and_open_excel_in_word("你的文档路径.docx") ``` 请注意,这段代码假设你已经在计算机上安装了Word和Excel,并且需要正确设置文件路径。另外,由于安全限制,某些版本的Office可能不允许打开嵌入的OLE对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值