2

Python 与 EXCEL 通信......我需要找到一种方法,以便我可以找到/搜索给定列数据的行。现在,我一一扫描整行...如果有一些功能,例如 FIND/SEARCH/REPLACE .... 我在 pyExcelerator 或 xlrd 模块中看不到这些功能.. 我不想使用 win32com模块!它使我的工具基于窗口!

通过 Python 查找/搜索 Excel 行....任何想法,有人吗?

4

4 回答 4

6

@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):
于 2009-06-06T03:12:29.693 回答
2

你不能。这些工具不提供搜索功能。您必须循环遍历数据并自行搜索。对不起。

于 2009-04-22T20:22:54.253 回答
2

“现在,我一一扫描整行”

那有什么问题?“搜索”——在电子表格上下文中——真的很复杂。搜索值?搜索公式?向下搜索行然后跨列搜索?仅搜索特定列?仅搜索特定行?

电子表格不是简单的文本——简单的文本处理设计模式不适用。

电子表格搜索很困难,而且您做得正确。没有比这更好的了,因为它很难。

于 2009-04-22T17:12:38.703 回答
0

使用 pyExcelerator,您可以通过首先找到最大行和列索引(并存储它们)来进行简单的优化,以便您迭代(row, i) for i in range(maxcol+1)而不是迭代所有字典键。这可能是你得到的最好的,除非你想通过并建立一个字典映射值到一组键。

顺便说一句,如果您使用 pyExcelerator 编写电子表格,请注意它有一些错误。我遇到过一个涉及写入 2 30 和 2 32 (或大约)之间的整数的问题。这些天显然很难联系到原作者,因此xlwt修复(已知)错误的分支也是如此。对于编写电子表格,它是 pyExcelerator 的直接替代品;你可以做import xlwt as pyExcelerator任何改变。但是,它不读取电子表格。

于 2009-04-22T22:55:56.803 回答