Python中使用xlrd库查找Excel单元格值并在找到字符串后获取单元格值

65 阅读2分钟
  • 需要在Excel工作簿中搜索一个字符串,然后获取该字符串下方的单元格值
  • 找到值后,需要将Excel文件的名称更改为保留文件名开头三个字母并追加找到的值
  • Excel工作簿中没有标题,它更像一个表单
  • 需要处理大量此类文件,并且需要搜索两个可能的字符串
  • 需要将更改后的文件名称包含从工作表中找到的单元格值
  1. 解决方案:
  • 使用xlrd库来读取Excel工作簿
  • 遍历工作簿中的每个工作表和单元格
  • 检查当前单元格是否包含要搜索的字符串
  • 如果找到该字符串,则打印该单元格的值并获取其行索引和列索引
  • 使用找到的行索引获取字符串下方的单元格
  • 提取字符串下方的单元格值并将其用作新文件名的扩展名
  • 使用新的文件名重命名Excel文件
import os
import re
import xlrd


def rename_excel_files(path):
    for filename in os.listdir(path):
        try:
            # 打开Excel工作簿
            book = xlrd.open_workbook(os.path.join(path, filename))

            # 获取工作簿的第一个工作表
            sheet = book.sheet_by_index(0)

            # 遍历工作表的每一行
            for rowidx in range(sheet.nrows):

                # 获取当前行
                row = sheet.row(rowidx)

                # 遍历当前行的每个单元格
                for colidx, cell in enumerate(row):

                    # 检查当前单元格是否包含要搜索的字符串
                    m = re.search(r'string', str(cell.value))

                    # 如果找到该字符串,则打印该单元格的值并获取其行索引和列索引
                    if m:
                        print(filename)
                        print(colidx)
                        print(rowidx)
                        print(cell.value)

                        # 获取字符串下方的单元格
                        nextrow = sheet.row(rowidx + 1)

                        # 提取字符串下方的单元格值并将其用作新文件名的扩展名
                        newfile_extension = (str(nextrow[0].value).split('.')[0])

                        # 使用新的文件名重命名Excel文件
                        new_filename = filename[:3] + newfile_extension
                        os.rename(os.path.join(path, filename), os.path.join(path, new_filename))

        except:
            pass  # 如果出现异常,则忽略该文件


if __name__ == "__main__":
    path = "path/to/directory"
    rename_excel_files(path)

在上面的代码中,函数rename_excel_files()接受一个路径作为参数,并遍历该路径下的所有Excel文件。对于每个文件,它会打开该文件并获取它的第一个工作表。然后,它会遍历工作表的每一行和单元格,并检查每个单元格是否包含要搜索的字符串。如果找到该字符串,它会打印该单元格的值并获取其行索引和列索引。然后,它会获取字符串下方的单元格并提取其值作为新文件名的扩展名。最后,它会使用新的文件名重命名Excel文件。