Python 使用xlwings库操作excel的简明实践分享之数据的范围取得与清除

351 阅读2分钟

本文接上一篇文章,进一步探寻更为便捷的数据处理方法

获取有效范围与行列数

怎么知道有多少行呢

print(ws.used_range)
print(ws.used_range.last_cell.row)
print(ws.used_range.last_cell.column)

第一个查看有效范围,是个Range对象,和上面取出来的区域是一种 东西。

第二第三个分别获取有效区域最后一个单元格的行数和列数。


向原有数据行增加数据就从这个位置向后增加,增加的是二维数组就是向后向下增加。

image.png

获取整行数据

使用的是附加expand链条 ,使用right操作符

  image.png

整行数据不需要计算有多少格子,自己会计算到该行的有效区域终点地方。

比如这里给I行多加一个数字,在取第二行的值时,也不会多一个None。

image.png

 

获取整列数据

使用down  操作符。

image.png   其本质是基于当时这个单元格的节点向两侧拓展搜索数据。整行和整列是因为起点在第一列或者第一行,如果不是那就是个片段。

比如从A2开始expand就只有5个数据

image.png

expand目前只能取right和down两个参数,并没有反向的left和up,没有填写操作符参数就是一个范围,切取当前单元格向下向后的有效区域,此时部分区域不规则的话,没有值的单元格会被填充None,二维数组的每一行的数目会严格保持一致。如果没有参数的时候选的第一个单元格,那么获取的将是整个表的数据。

image.png

清理数据

对单元格上数据的清理可以分为3种,一种是清理格式的,一种是只清理内容的,还有一种是两个一起清理的。

range_B1_G4 = ws.range('B1:G4')
range_B1_G4.clear()
range_B1_G4.clear_formats()
range_B1_G4.clear_contents()

可以看到,中间的一部分B1:G4的范围被清除了。

image.png

同样的,对于python而言,给一定范围赋予None值即可清除内容,不过不如clear来得好用,需要赋予同样尺寸的数据才行。

image.png

清除数据和格式的操作同样能套用expand进行行列行为,同时,如果是对整个表的清除,则是ws.clear()