Python 与 EXCEL 通信......我需要找到一种方法,以便我可以找到/搜索给定列数据的行。现在,我一一扫描整行...如果有一些功能,例如 FIND/SEARCH/REPLACE .... 我在 pyExcelerator 或 xlrd 模块中看不到这些功能.. 我不想使用 win32com模块!它使我的工具基于窗口!
通过 Python 查找/搜索 Excel 行....任何想法,有人吗?
Python 与 EXCEL 通信......我需要找到一种方法,以便我可以找到/搜索给定列数据的行。现在,我一一扫描整行...如果有一些功能,例如 FIND/SEARCH/REPLACE .... 我在 pyExcelerator 或 xlrd 模块中看不到这些功能.. 我不想使用 win32com模块!它使我的工具基于窗口!
通过 Python 查找/搜索 Excel 行....任何想法,有人吗?
@John Fouhy:[我是 xlwt 的维护者,也是 xlrd 的作者]
pyExcelerator 的电子表格阅读部分被严重弃用,以至于它完全从 xlwt 中消失了。要使用 Python 2.1+ 读取由 Excel 2.0 至 11.0 (Excel 2003) 或兼容软件创建的任何 XLS 文件,请使用xlrd
xlrd 不需要“简单的优化”:
import xlrd
book = xlrd.open_workbook("foo.xls")
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget")
for row_index in xrange(sheet.nrows):
for col_index in xrange(sheet.ncols):
你不能。这些工具不提供搜索功能。您必须循环遍历数据并自行搜索。对不起。
“现在,我一一扫描整行”
那有什么问题?“搜索”——在电子表格上下文中——真的很复杂。搜索值?搜索公式?向下搜索行然后跨列搜索?仅搜索特定列?仅搜索特定行?
电子表格不是简单的文本——简单的文本处理设计模式不适用。
电子表格搜索很困难,而且您做得正确。没有比这更好的了,因为它很难。
使用 pyExcelerator,您可以通过首先找到最大行和列索引(并存储它们)来进行简单的优化,以便您迭代(row, i) for i in range(maxcol+1)
而不是迭代所有字典键。这可能是你得到的最好的,除非你想通过并建立一个字典映射值到一组键。
顺便说一句,如果您使用 pyExcelerator 编写电子表格,请注意它有一些错误。我遇到过一个涉及写入 2 30 和 2 32 (或大约)之间的整数的问题。这些天显然很难联系到原作者,因此xlwt
修复(已知)错误的分支也是如此。对于编写电子表格,它是 pyExcelerator 的直接替代品;你可以做import xlwt as pyExcelerator
任何改变。但是,它不读取电子表格。