如何使用PyWin32返回Excel行?

时间:2013-08-17 11:17:07

标签: python pywin32

我要做的是搜索某个范围内的值,然后打印存在这些值的Excel行。

类似的东西:

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

这似乎应该非常简单,但我在思考如何做到这一点时遇到了一些困难。我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

根据user2682863的回答,我最终做的是以下内容:

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

这似乎有效,因为我要查找的值将始终位于活动工作表的A列中。