Python win32com库处理Excel,提示(作者希望以只读方式打开...)

本文讲述了如何在使用Win32Com库操作Excel时,解决以只读模式打开导致的隐藏行列无法获取问题,通过调整`Workbooks.Open`参数和VBA测试,实现Excel的读写权限控制。
摘要由CSDN通过智能技术生成

最近做的项目需要读写Excel文件,文件中往往会出现隐藏行和列的情况(因为隐藏的行列数据无法获取到)
需要清除掉文件中的所有隐藏,如果Excel开启了(始终以只读方式打开)
就会导致win32com库打开Excel时默认是只读方式打开
在这里插入图片描述

在这里插入图片描述

解决Win32Com库打开上述Excel时默认只读问题

import win32com.client
import pythoncom

pythoncom.CoInitialize()
excel = win32com.client.Dispatch("Excel.Application")

excel.Visible = False    # False后台打开 True前台打开
excel.DisplayAlerts = False     # False禁止一切弹窗
excel.ScreenUpdating = False    # False关闭屏幕刷新(提高执行效率)
excel.AskToUpdateLinks = False  # False禁止链接更新

# 打开Excel文件
workbook = excel.Workbooks.Open(excel_path, False, False, None, password, password, True)
worksheet = workbook.Worksheets(sheet_name)

if worksheet.AutoFilterMode:
   # worksheet.AutoFilterMode = False  # 去除Excel中的筛选
   worksheet.AutoFilter.ShowAllData    # 去除所有筛选条件

# 清除行隐藏
for row in rng.Rows:
     if row.Hidden:
         row.Hidden = False
# 清除列隐藏
for column in rng.Columns:
    if column.Hidden:
        column.Hidden = False
workbook.Save()
workbook.Close()
excel.Quit()
pythoncom.CoUninitialize()

excel.Workbooks.Open参数的功能说明:
① FileName:Excel的路径
② UpdateLinks:False,禁用指定外部引用 (链接) 在文件中的更新
③ ReadOnly:False,读写模式打开
④ Format:如果 Microsoft Excel 打开文本文件,则此参数指定分隔符字符。 如果省略此参数,则使用当前分隔符。 (没用到,我传的None)
⑤ Password:包含打开受保护工作簿所需密码的字符串
⑥ WriteResPassword: 包含写入写保护的工作簿所需密码的字符串
⑦ IgnoreReadOnlyRecommended:True,则不让 Microsoft Excel 显示只读的建议消息(读写方式关键参数)
其他参数参考链接:Workbooks.Open()

我之前是通过关键字方式传参的,没有任何效果还是以只读模式打开的

workbook = excel.Workbooks.Open(excel_path, UpdateLinks=False, ReadOnly=False, Password=password, WriteResPassword=password, IgnoreReadOnlyRecommended=True)`

使用VBA测试,可以对Excel进行编辑

Set Wb = Workbooks.Open(FilePath, False, False, , "123", "123", True)

将Python代码改为位置传参,成功!!!真的是无语啊!

workbook = excel.Workbooks.Open(excel_path, False, False, None, password, password, True)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值