pyExcelerator或xlrd - 如何根据几个列的数据查找一行?

2 投票
4 回答
7938 浏览
提问于 2025-04-15 11:12

在Python中和EXCEL进行沟通……我需要找到一种方法,可以根据给定的列数据来查找一行。目前,我是一个一个地扫描整行……如果有一些像FIND(查找)/SEARCH(搜索)/REPLACE(替换)这样的功能就太好了……我在pyExcelerator或xlrd模块中没有看到这些功能……我不想使用win32com模块!这样会让我的工具变成Windows专用的!

通过Python在Excel中查找/搜索行……有没有什么想法,谁能帮帮我?

4 个回答

2

你不能这样做。这些工具没有搜索功能。你必须自己在数据中循环查找。抱歉。

2

“现在,我正在一行一行地扫描整个表格。”

这样做有什么问题呢?在电子表格中,“搜索”其实是非常复杂的。你是要搜索数值吗?还是要搜索公式?是先从行里搜索再到列里搜索?还是只搜索特定的列?或者只搜索特定的行?

电子表格可不是简单的文本——简单的文本处理方法在这里不适用。

电子表格的搜索很难,而你现在的做法是正确的。因为这确实很难,所以没有更好的方法。

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

撰写回答