最近做的项目需要读写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)