我正在努力自动完成我在Excel中的一些工作。我正在尝试做的很大一部分是比较一些数据,以确定是否需要将其添加到某种系统中。
我正在努力解决的问题是在Excel工作表中查找行的长度。通过Excel工作表提供的数据可能非常长,如果我想让Python抓住所有内容并且其中包含所有内容,我认为这是邋coding的编码。
我已经环顾了一下并找到了一些使用Range().vertical
的建议,但它似乎不再出现在xlwings中了。
我发现一个解决方法是读取完成表,循环它直到我发现一个单元格包含“无”,然后停止循环,但这仍然感觉很“非python-ish”。
例如。对于我正在使用的数据
A B
1 data1 stuff9
2 data9 stuff4
3 data3 stuff3
4 data4 stuff2
5
我想要找出的是A列有多少行数据。在这个例子中,我应该找到4(尽可能优雅)
使用current_region和size的方法,current_Region给我回“1”,size给我回“1048576”(我认为excel的最大值,所以它只是继续计数;))和end-method相同
答案 0 :(得分:2)
我刚刚安装了xlwings并花了5分钟查看文档,并为您提供了两个选项:
import xlwings as xw
app = xw.apps[0]
book = app.books[0]
sheet = book.sheets[0]
rng = sheet.range('A1')
# This gives the last row in the TABLE'S current_region
# This will take additional columns in to consideration
rng.current_region.end('down').row
# This gives the last row in column A
rng.end('down').row
根据您的示例数据,两种方法都会产生4
的结果,但您应该注意差异,例如,如果列B中包含更多数据,那么第一种方法不适合识别& #34;最后一行"在A列中,它将始终返回整个current_region
对象的最后一行。