2016-12-13 149 views
-1

我正在對excel中的一些工作進行自動化。我試圖做的很大一部分是比較一些數據以確定它是否需要添加到某種系統中。python xlwings excel長度表

我現在掙扎的地方是在excelsheet中查找行的長度。通過該excelsheet提供的數據可能會非常強烈,我認爲它是草率的編碼,如果我讓python只是抓住所有內容:P

我環顧了一下,發現了一些建議, Range()。vertical,但它似乎不再在xlwings中。

一種解決方法,我發現正在讀compleet片,循環,直到我發現的細胞containint「無」,然後停止循環,但仍給人的感覺「非蟒蛇-ISH)。

如。對於數據我使用

A  B 
    1 data1 stuff9 
    2 data9 stuff4 
    3 data3 stuff3 
    4 data4 stuff2 
    5 

我試圖找出是多少行的數據也列A有。在這個例子中,我應該找到4(優雅地)

使用current_region和size方法,current_Region給我返回「1」,大小給出我回到了「1048576」(我認爲excel的最大值,所以它只是繼續計數;)),最後一種方法也是如此。

+0

[current_region](http://docs.xlwings.org/en/stable/api.html#xlwings.Range.current_region)方法呢?結合'end'方法? –

+0

啊,我想我錯過了整個文檔中我實際上正在尋找的一件事情(真的讓我頭痛了4個多小時。「)。要旋轉 – Janko

+0

@DavidZemens建議的方法沒有雪茄 – Janko

回答

0

我剛安裝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對象的最後一行。