2013-08-17 3 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 на активном листе.

Смежные вопросы