继续补充:读取单元格注释的方法,还是结合使用区域

中午记了一篇学习笔记,内容是关于通过“使用区域(used_range)”循环读取单元格数据的的方法,下午继续补充通过“使用区域”循环读取单元格注释的方法

这次换一种打开Excel的写法,使用with语句。实践发现,该方法可以在程序崩溃时自动关闭后台的Excel

import xlwings as xw

file_path = r'...\AAA.xlsx'

with xw.App(visible=False,add_book=False) as app_e:
    # 0、打开Excel文件
    work_book = app_e.books.open(file_path)
    # 1、选取sheet页
    sht = work_book.sheets[0]
    # 2、获得使用区域
    used_range = sht.used_range
    
    # 3、循环读取注释(使用了Excel的api)
    list_cell_comment = []
    for row in uesd_range:    # 其实这里的row指的是该区域中一整行的单元格,并不是指行号,写成cells_in_one_row更好理解
        for cell in row:
            comment = cell.api.Comment    # 读取注释
            if comment:
                # 没有注释时返回一个None值,此处为了读取注释文本不报错,加了一个!=None的过滤
                comment = comment.Text()    # 用了api后,相关方法要用大写开头
                list_cell_comment.append(comment)
    print(f'list_cell_comment:\t{list_cell_comment}')
    
    # 手写代码,复制需谨慎,理解着用
    

方法2:

在下午的实践中,发现可以直接从sht.used_range中读取注释,循环上少了一层,速度能快不少

import xlwings as xw

file_path = r'...\AAA.xlsx'

with xw.App(visible=False,add_book=False) as app_e:
    # 0、打开Excel文件
    work_book = app_e.books.open(file_path)
    # 1、选取sheet页
    sht = work_book.sheets[0]
    # 2、获得使用区域
    used_range = sht.used_range
    
    # 3、开始循环读取注释
    list_cell_comment = []
    for cell in used_range:
        comment = cell.api.Comment
        if comment:
            comment = comment.Text()
            list_cell_comment.append(comment)
    print(f'list_cell_comment:\t{list_cell_comment}')
# 还是用到了Excel的api,只不过循环used_range处只用了一层循环
            

方法1和方法2都用了api,这个api可能是win32com的,xlwings能不能再争气一点,有个自己读取注释的方法,不要总是用别人的api...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值