请问xlwings如何获取有数据的所有行数和列数?
xlwings文档根本找不到有这个方法,请各位大神不吝赐教
原谅我的无知。。。主要也就Python刚入门,文档看了许久也就一知半解。xlwings的强大之处是可以调用VBA,那么就好解决了,即用VBA的「UsedRange」。
受这篇帖子启发:
https://gist.github.com/Elijas/2430813d3ad71aebcc0c83dd1f130e33
补充:若是之前有空行(列),则只返回有数据的行(列)数,最后需要再将前面的空行数加上(感谢 @哭吧叫吧 提醒)。
此外还有一个缺点,即返回行(列)数可能会比实际行(列)数大,原因是如果删除数据时是非整行(列)删除,该命令则返回未删除前的值。
nrow = sheet1.api.UsedRange.Rows.count
ncol = sheet1.api.UsedRange.Columns.count
以下为原帖:
也可以用:
rng = sheet1.range(A1).expand()nrow = rng.last_cell.rowncol = rng.last_cell.column获取行数的话,openpyxl感觉好很多,xlwings有点问题,要是A1及附近单元格内容为空,获取值有误(感觉类似ctrl+down和ctrl+right的结果)。
实例:
import xlwings as xw
app=xw.App(visible=False,add_book=False)
wb = app.books.open(r工作簿1.xlsx)
ws = wb.sheets[Sheet1]
ws.used_range.shape
如果有中间有空格或者后面有空格的话,openpyxl的Sheet.max_row、Sheet.max_column是不准确的(有可能返回的是65536行或1048576行),而且openpyxl无法打开加密的Excel,xlwings由于使用了与VBA一致的API,因此只要VBA有的方法,xlwings都有;同时xlwings与pandas结合的也很好;最后实践过程中openpyxl对excel内置格式支持的不够好,比如修改完工作簿另存为时,合并单元格的边框会丢失)。
sheet.range(1, 1).expand().shape
我网上找了半天这个问题终于这里找到了。
import xlwings as xw
wb = xw.Book(rF:PythonDataxlwingsOriginalData.xlsx)
sht = wb.sheets[0]
info = sht.used_range
nrows = info.last_cell.row
print(nrows)
ncolumns = info.last_cell.column
print(ncolumns)
想了解更多xlwings处理Excel的内容请关注一下我的博客呀
https://blog.csdn.net/qq_31989047/article/details/103447510
rng=sheet1.range(A1).expand(table)
nrows=rng.rows.count
ncols=rng.columns.count
在py3.6中验证通过
推荐阅读: