xlrd在其他Excel文件中查找Excel值

我正在玩xlrd,我有一些困难。 我想要做的主要想法是打开Excel文件,将第一列的内容读入数组,并使用该数组在另一个Excel文件中进行search。 find该值时,应从第二个Excel文件返回三个单元格的内容。 我的代码:

import xlrd import os.path from docx import Document document = Document() registry = xlrd.open_workbook('/root/Desktop/registry.xlsx') findings = xlrd.open_workbook('/root/Desktop/findings.xlsx') findings_sheet = findings.sheet_by_index(0) registry_sheet = registry.sheet_by_index(0) num_rows = findings.nrows - 1 curr_row = 0 findings_array = [] while curr_row < num_rows: row = findings.row(curr_row) findings_array += row curr_row += 1 for finding in findings_array: for r in range(first_sheet.nrows): cell_col1=first_sheet.cell(rowx=r,colx=0).value if cell_col1 == finding: print first_sheet.cell(r,3) print first_sheet.cell(r,4) print first_sheet.cell(r,5) else: print "Finding not found" 

目前它不工作。 如果我更换, if cell_col1 == finding: if cell_col1 == "ABC":那么条件工作,但它打印出单元格5次,这是我的数组中发现的数目。

我知道我的代码有问题,但我不是一个程序员,我有点卡住了。

我不能运行你的代码,并以更pythonic风格重写它:

 import xlrd import os.path registry_doc = xlrd.open_workbook('/tmp/s.xlsx') findings_doc = xlrd.open_workbook('/tmp/f.xlsx') findings_sheet = findings_doc.sheet_by_index(0) registry_sheet = registry_doc.sheet_by_index(0) findings = {findings_sheet.cell_value(i, 0) for i in range(0, findings_sheet.nrows)} for r in range(0, registry_sheet.nrows): cell_col1=registry_sheet.cell_value(rowx=r,colx=0) if cell_col1 in findings: print registry_sheet.cell_value(r,2) print registry_sheet.cell_value(r,3) print registry_sheet.cell_value(r,4) 

它必须工作

错误在if cell_col1 == finding: 。 你正在比较strlist of cell

如果你想把第一列的内容读入数组 ,这一行:

 findings_array += row 

应该:

 findings_array += row[0]