簡體   English   中英

只讀具有值python win32com的Excel單元格

[英]Read only Excel Cells with values python win32com

我有一個如下的Excel文檔

num value1 value2

1       A      100
2       B      
3       c      300

我想遍歷value2以獲得超過200的值,如果發現超過200的值,則打印value1 我遇到的一個大問題是告訴它在到達帶有文本的單元格末尾時停止for循環。

我的循環最好是這樣的:

while columnA is not empty:
     if value2 > 200:
           print (value1)

一些注意事項:我正在使用win32com。 在我的數據集中, ColumnA永遠不會為空。 預先感謝您提供的任何幫助!

編輯:每個文檔的行數不會總是相同。 我需要它自動停止。 抱歉,不清楚

考慮使用Excel的對象庫,特別是其Range ObjectWorksheet.Cells屬性 同樣,通常在Excel VBA中,您搜索工作表以找到最后一行,然后循環直到找到為止:

Excel工作表

Excel工作表

Python COM代碼 (使用try / except / finally始終釋放資源,無論是否出錯)

import win32com.client as win32

try:
    f = "myWorkbook.xlsx"
    xl = win32.gencache.EnsureDispatch('Excel.Application')
    wb = xl.Workbooks.Open(f)
    ws = wb.Worksheets(1)

    xlUp = -4162
    lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1

    for i in range(2,lastrow):
        # LOOP RANGE OBJ
        if ws.Range("C" + str(i)).Value is not None and ws.Range("C" + str(i)).Value > 200:
            print(ws.Range("B" + str(i)).Value)

        # LOOP CELLS OBJ
        if ws.Cells(i,3).Value is not None and ws.Cells(i,3).Value > 200:
            print(ws.Cells(i,2).Value)

    wb.Close(False)
    xl.Quit

except Exception as e:
    print(e)

finally:
    ws = None
    wb = None
    xl = None

輸出量

c
c

我不確定如何從excel文件解析,但是如果您使用的是xlrd模塊,我認為類似的方法可能會起作用。

    workbook = xlrd.open_workbook('read_file.xlsx')

    worksheet = workbook.sheet_by_index(0)

    for i in range(1,4):
        if worksheet.cell(i, 2).value > 200:
            print worksheet.cell(i,1)

對於循環范圍,我認為您可以指定行數,但我現在不記得了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM