【问题标题】:Python xlwings excel length of tablePython xlwings excel表格长度
【发布时间】:2018-10-12 22:08:31
【问题描述】:

我正在努力将我在 Excel 中的一些工作自动化。我正在尝试做的很大一部分是比较一些数据以确定是否需要将其添加到某种系统中。

我目前正在苦苦挣扎的地方是在 Excel 工作表中查找行的长度。通过该 Excel 表提供的数据可能非常长,如果我让 Python 抓取其中的所有内容,我认为这是草率的编码。

我环顾四周,发现了一些使用 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 .

【问题讨论】:

  • current_region 方法呢?结合end方法?
  • 啊,伙计,我想我错过了整个文档中我真正正在寻找的一件事(我真的为此头疼了 4 个小时>.
  • @DavidZemens no cigar on theSuggested methods
  • 您应该展示您的努力(代码)并详细说明“没有雪茄/不起作用”的含义(如果是错误,请包含堆栈跟踪。或者您的结果是否与您的预期有出入?如果有,请描述原因等)。作为这里的新用户,毫无疑问,您被提醒要查看how to ask 之类的内容,并且期望问题通常应遵循这些(非常基本的)准则:)

标签: python excel xlwings


【解决方案1】:

我刚刚安装了 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 列中有更多数据,那么第一种方法不适合识别“最后一行" 在 A 列中,它总是会返回整个 current_region 对象的最后一行。

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 2015-05-09
    • 2023-02-08
    • 1970-01-01
    • 2022-11-20
    • 2016-01-07
    • 2018-07-21
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多