xlwings通过数字索引(i,j)读取单元格数据的方法

今天,补充一种(其实算两种)关于xlwings通过数字索引读取单元格数据的方法。

最初开始使用xlwings读取单元格数据的时候,用的是range('A1').value的方法访问单元格数据,是range与A1(字母+数字)的组合。

现在遇到了需要循环读取与写入功能的问题,于是尝试查询range或者xlwings是否有像Win32com一样使用(i,j)循环读取与写入的方法,查了很久发现很多资料给出的都是xlwings+.api来调用win32com的东西,总觉得不是很好,尤其是觉得.api调用后,速度会慢。

今天,找到正确的方法啦,方法如下:

方法1

sheet1.range((i,j)).value

也可写成这样

cell_index = (i,j)

sheet1.range(cell_index).value

这是《Excel+Python飞速搞定数据分析与处理》中提及的方法,用的还是range,只是在range()括号中再加上索引的元组(i,j)即可。

方法2

与方法1很像

sheet1.range(i,j).value

直接在range()的括号内使用单元格的数字索引 i,j

去问了AI,其的回答是说,xlwings给range留了很大的灵活性,让用户可以通过多种不同的方式来访问单元格数据,好吧,还真是灵活!

找到这两个方法还是挺高兴的,因为之前用的是range,现在还是range,而且是xlwings原装的方法,不错,其实用cell应该也可以,但一直没有细研究。

整理后的代码如下:

with xw.App(visible=False,add_book=False) as app_e:
    app_e.display_alerts = False
    app_e.screen_updating = False
    # 打开Excel
    work_book = app_e.books.open(file_path)
    # 获取sheet页
    sheet_name = "循环读取测试"
    sheet1 = work_book.sheets[sheet_name]
    # 读取C3的数据,索引为(3,3)
    cell_index = (3,3)
    data_ij = sheet1.range(cell_index).value
    print(f'data_ij:\t{data_ij})

    # 注:手敲代码,谨慎复制。

总结一下:

sheet1.range((i,j)).value

sheet1.range(i,j).value

好,结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值