1

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

就像是:

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

这看起来应该很简单,但我在思考如何去做时遇到了一些困难。任何帮助将不胜感激。

4

2 回答 2

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)

于 2013-08-17T15:09:26.250 回答
0

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

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

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

于 2013-08-17T20:52:44.143 回答