python - 如何使用win32实现类似VBA的“Range.Find”?
问题描述
我希望使用 Python 中的 win32com 包来实现类似于VBA 中 Range.Find 方法的功能。我正在处理一个 Excel CSV 文件。虽然我找到了很多使用 的解决方案range()
,但它似乎需要指定一个固定的单元格范围,而不是Range.Find
在 VBA 中,它会在工作表中自动搜索而不固定范围。
这是我的代码:
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 的粉丝(@ashleedawg 评论的 10 倍),您可以通过 xlwings 直接使用它:
import xlwings as xw
bookName = r'C:\somePath\hello.xlsx'
sheetName = 'Sheet1'
wb = xw.Book(bookName)
sht = wb.sheets[sheetName]
myCell = wb.sheets[sheetName].api.UsedRange.Find('test')
print('---------------')
print (myCell.address)
input()
因此像这样的输入:
很好地返回这个:
推荐阅读
- python - 将 pandas 数据框操作为所需的输出
- ruby-on-rails - 如何在不安装 Linux 子系统的情况下在 Windows 10 上运行“rails credentials:edit”
- c - 在链表中创建数据类型为“struct”的新节点
- sql-server - 使用左连接而不是联合
- list - 我如何称呼一个也支持提升的幺半群?
- javascript - 使用情感样式列表元素
- php - Docker apache2 /etc/hosts ignored 仅适用于 localhost
- javascript - 如何将嵌套对象数组转换为字符串?
- android - 如何在 Android 中秘密保存令牌
- python - 一个环境中安装的包在其他环境中也可以使用,为什么呢?