Python处理Excel所遇坑点

win32com

使用win32com截图有个坑点,加载Excel处理Excel有点像外挂操作,程序过太快会有很多地方没取到值的情况,所以最好在关键操作之间插入time.sleep(1)作为缓冲。

截图失败

pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '类 Range 的 CopyPicture 方法无效', 'xlmain11.chm', 0, -2146827284), None)

如果这个表完全是由openpyxl之类的库生成,那么优先查看它的激活页是哪一页,有时候用win32截图指定sheet页可能读取的反而是上会默认保存的激活页。
这时候需要重载一下这个文件,调整一下激活页,这里会有一个坑点:如果只是将某页状态调整为active,那么win32com打开excel会彻底找不到那页,因为上次默认保存的激活页会和本次激活页连在一起形成一个工作组导致win32com读取失败,这里需要循环处理一下sheet页。
openpyxl

import openpyxl

workbook = openpyxl.load_workbook('your_file.xlsx')
workbook.active = 2

for sheet in workbook:
    if sheet.title == 'your_sheet_name':
        sheet.sheet_view.tabSelected = True
    else:
        sheet.sheet_view.tabSelected = False

workbook.save('your_file.xlsx')

参考文献

posted @ 2023-09-05 16:06  Teriteri  阅读(1050)  评论(0)    收藏  举报