2013-08-17 49 views
1

我正在做的是在一個範圍內搜索一個值,然後打印這些值存在的Excel行。如何使用PyWin32來返回Excel行?

喜歡的東西:

for cell in xl.ActiveSheet.Range('A1:A30'): 
    if val in cell: 
     #Print rows in which that value appears 

這似乎喜歡的事,應該是相當簡單的,但我有一個如何做到這一點有些難度的思考。任何幫助將真誠地非常感激。

回答

0

可能像

import win32com.client.dynamic 
from pythoncom import CoInitialize, CoUninitialize 

CoInitialize() 
xlApp = win32com.client.dynamic.Dispatch('Excel.Application') 
xlBook = xlApp.Workbooks.Open(filename) 

def access_range(sheet, row1, col1, row2, col2): 
    "return a 2d array (i.e. tuple of tuples)" 
    sht = xlBook.Worksheets(sheet) 
    return sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)) 

def get_range(sheet, row1, col1, row2, col2): 
    return access_range(sheet, row1, col1, row2, col2).Value 


for column, data in enumerate(get_range(1, 1, 1, 10, 10)): 
    for row, value in enumerate(data): 
     if value == search_value: 
      print "value found in column %s, row %s" % (chr(65+column), row+1) 

CoUninitialize() 

注:第一張,列和行1(不是0)

0

基於user2682863的回答,我落得這樣做如下:

for row, cell in enumerate(self.xl.ActiveSheet.Range('A:A')): 
    if val == cell: 
     row = row + 1 
    print row, cell 

這似乎工作,因爲我一直在尋找的值將在活動工作表的列A中。