openpyxl基本搜索

时间:2012-06-07 20:33:25

标签: python xlsx openpyxl

我正在尝试搜索excel文档,如果在excel文档中匹配了mp3文件的名称,它会打印出找到该名称实例的行。

这就是我所拥有的:

from mutagen.easyid3 import EasyID3
from openpyxl import load_workbook
import glob
import re
import os
for name in glob.glob('*.mp3'):
  audio = EasyID3(name)
  wb = load_workbook('xl.xlsx')
  sh = wb.get_sheet_by_name('Russian')
  for row in sh:
    if row.value == name:
      print row.number

1 个答案:

答案 0 :(得分:2)

首先,您要加载工作簿并查找每个.mp3文件的工作表。将该代码移到循环之外。

第二个问题是您尝试迭代不可迭代的工作表sh

第三个问题是您将row.value测试为相同的名称,您可能需要sh.cell[0].value

您的代码可能看起来更像:

from mutagen.easyid3 import EasyID3
from openpyxl import load_workbook
import glob
import re
import os
wb = load_workbook('xl.xlsx')
sh = wb.get_sheet_by_name('Russian')
for name in glob.glob('*.mp3'):
    audio = EasyID3(name)
    for row_index in range(sh.get_highest_row()):
        if sh.cell(row=row_index, column=0).value == name:
            print(row_index)

正如@Bill Kidd指出的那样,在openpyxl 2.4.2中,您必须将.get_highest_row()替换为.max_row(没有大括号!)。