Python与EXCEL通信...我需要找到一种方法,以便我可以找到/搜索给定列数据的行。现在,我逐个扫描整行...这将是有用的,如果有一些函数,如FIND / SEARCH / REPLACE ....我没有在pyExcelerator或xlrd模块中看到这些功能..我不想使用win32com模块!它使我的工具窗口基于!
通过Python查找/搜索Excel行....任何想法,任何人?
答案 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
而不做其他改变。但它不会阅读电子表格。