pyExcelerator或xlrd - 如何查找/搜索给定的几列数据的行?

时间:2009-04-22 16:23:02

标签: python excel search pyexcelerator xlrd

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

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

4 个答案:

答案 0 :(得分:5)

@John Fouhy:[我是xlwt的维护者,xlrd的作者]

pyExcelerator的电子表格读取部分被严重弃用,完全消失了xlwt。要使用Python 2.1+读取Excel 2.0最高11.0(Excel 2003)或兼容软件创建的任何XLS文件,请使用xlrd

xlrd不需要“简单的优化[sz] ation”:

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):

答案 1 :(得分:2)

“现在,我逐个扫描整行”

这有什么问题? “搜索” - 在电子表格上下文中 - 非常复杂。搜索值?搜索公式?向下搜索行然后跨列?仅搜索特定列?仅搜索特定行?

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

电子表格搜索很难,而且你正确地进行了搜索。没有比这更好的了,因为它很难。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

顺便提一下,如果您使用pyExcelerator编写电子表格,请注意它有一些错误。我遇到过一个涉及在2 30和2 32(或左右)之间写入整数的问题。这些天原作者显然很难联系,所以xlwt是修复(已知)错误的分支。对于编写电子表格,它是pyExcelerator的替代品;你可以做import xlwt as pyExcelerator而不做其他改变。但它不会阅读电子表格。