xlwings直接读取使用区域的数据

这里的读取方法,不用最大行号最大列号,直接使用used_range对应的方法

代码如下:

import xlwings as xw

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

# 实例化app,打开文件
app_e = xw.App(Visible=False,add_book=False)
work_book = appe.books.open(file_path)

# 找到要读取的sheet页
sht = work_book.sheets[0]

# 获取使用区域
list_data_0 = sht.used_range    # 此行主要是测试用,看看used_range的打印结果是什么,与获取数据操作无关
print(f'list_data_0:\t{list_data_0}')

# 直接从使用区域获取数据
## 获取使用区域的数据(二维数组形式)
list_data = sht.used_range.value
print(f'list_data:\t{list_data}')
## 取出二维数组中的每一个数(即每一个单元格的数据)
list_1 = []
for row in list_data:
    for data in row:
        list_1.append(data)
print(f'list_1:\t{list_1}')

# 手写代码,谨慎复制。

另一种从最大行最大列获取数据的方法也写在下面

import xlwings as xw

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

# 实例化app,打开文件
app_e = xw.App(Visible=False,add_book=False)
work_book = appe.books.open(file_path)

# 找到要读取的sheet页
sht = work_book.sheets[0]

# 读取使用区域的最后一个单元格,依次来获取最大行号、最大列号
row_num = sht.used_range.last_cell.row
col_num = sht.used_range.last_cell.column

# 循环读取数据
list_1 = []
for i in range(row_num):
    for j in range(col_num):
        value_x = sht.range(i+1,j+1).value
        list_1.append(value_x)
print(f'list_1:\t{list_1}')
# 在循环中range(i,j)为什么+1呢?
# 这是因为xlwings中单元格索引从1开始,如果不作+1处理,会出现pywintypes.com_error: (-2147352567, '发生意外。', (0, None, None, None, 0, -2146827284), None)的错误

# 循环读取数据的另一种写法
list_2 = []
for i in range(1,row_num+1):
    for j in range(1,col_num+1):
        value_x = sht.range(i,j).value
        list_2.append(value_x)
print(f'list_1:\t{list_2}')



之所以不用读取最大行号、最大列号然后循环的方法,是因为这种方法会把使用区域外的空白单元格也读进去,尤其是空白区域在使用区域左侧,如我使用的这个Excel文件

下方红色区域内,绿色标注的就是使用区域之外空白区域的数据

使用uesd_range.value读取的结果如下

used_range.value读取的结果没有涉及使用区域外的内容,且used_range.value读取的结果是一个二维数组,按行读取的,要取出具体数据,循环一下used_range.value即可。

截图中的list_1、list_2、list_3是我测试时使用的,与本文代码中的指代不一样,别被混淆了。

注:xlwings也可以使用i,j进行单元格数据的循环读取,并不是只能用range('A1').value这样使用单元格位置(英文+数字)的形式读取数据。

祝好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值