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中验证通过


推荐阅读:
相关文章