我要做的是在一个范围内搜索一个值,然后打印这些值所在的 Excel 行。
就像是:
for cell in xl.ActiveSheet.Range('A1:A30'):
if val in cell:
#Print rows in which that value appears
这看起来应该很简单,但我在思考如何去做时遇到了一些困难。任何帮助将不胜感激。
也许像
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)
根据user2682863的回答,我最终做的是以下内容:
for row, cell in enumerate(self.xl.ActiveSheet.Range('A:A')):
if val == cell:
row = row + 1
print row, cell
这似乎有效,因为我正在寻找的值将始终位于活动工作表的 A 列中。