我希望使用Python中的win32com包实现类似于the Range.Find method in VBA的功能。我正在处理一个Excel CSV文件。虽然我发现了很多使用range()
的解决方案,但它似乎需要指定一个固定的单元格范围,而不是VBA中的Range.Find
,后者将在工作表中自动搜索而不必固定范围。在
这是我的代码:
import win32com.client as client
excel= client.dynamic.Dispatch("Excel.Application")
excel.visible= True
wb= excel.workbooks.open(r"ExcelFile.xls")
ws= wb.worksheets('First')
### This able to extract information:
test_range= ws.Range("A1")
### Got issue AttributeError: 'function' object has no attribute 'Find':
test_range= ws.Range.Find("Series ID")
print(test_range.value)
这是否意味着Range.Find
方法在win32包中不受支持,还是我用错误的现有模块指向它?在
额外回答:如果你是Excel API的粉丝(10倍于@ashleedawg评论),你可以直接通过xlwings使用它:
因此,输入如下:
很好地返回这个:
如果你想用一个函数来做,这是一种方法-
defCell
是函数的名称。在它在运行后会生成:
因此,在代码的第一部分,生成了一些带有随机数字的Excel文件:
有了代码的第二部分,真正的“搜索”就开始了。在本例中,我们正在搜索
300
,它实际上是从代码的第一部分生成的值之一:因此,python开始循环遍历行和列,将值与
300
进行比较。如果找到该值,它将写入Found
并停止搜索:这段代码实际上可以重写,将第二部分作为函数(def)。在
相关问题 更多 >
编程相关推荐