迭代先前过滤的行openpyxl

我有一个Python代码写入加载Excel工作簿,遍历指定列中的所有行,将行保存在字典中,并将该字典写入.txt文件。

引用的vb脚本会在openpyxl执行之前打开工作簿,并将其过滤为只显示一些数据。

唯一的问题是,当openpyxl遍历工作簿时,它会logging每个值而不是过滤的数据。

例如,如果原始电子表格是:

ABC 1 xxx 2 xyx 3 xxx 

我筛选列B只显示包含“x”的行,然后保存该工作簿。 我想要openpyxl只遍历行1和3。

这里是我的代码:

 from openpyxl import load_workbook from openpyxl import workbook import os #sort using vba script os.system(r"C:\script.vbs") #load workbook path = 'C:/public/temp/workbook.xlsm' wb = load_workbook(filename = path) ws=wb.get_sheet_by_name('Sheet3') #make empty lists proj_name = [] proj_num = [] proj_status = [] #iterate through rows and append values to lists for row in ws.iter_rows('D{}:D{}'.format(ws.min_row,ws.max_row)): for cell in row: proj_name.append(cell.value) for row in ws.iter_rows('R{}:R{}'.format(ws.min_row,ws.max_row)): for cell in row: proj_num.append(cell.value) for row in ws.iter_rows('G{}:G{}'.format(ws.min_row,ws.max_row)): for cell in row: proj_status.append(cell.value) #create dictionary from lists using defaultdict from collections import defaultdict dict1 = dict((z[0],list(z[1:])) for z in zip(proj_num,proj_name,proj_status)) with open(r"C:\public\list2.txt", "w") as text_file: text_file.write(str(dict1)) text_file.close() 

不幸的是, openpyxl目前不包含过滤function。 正如文档中所指出的:“筛选器和sorting只能通过openpyxl进行configuration,但需要在Excel等应用程序中应用。

看起来好像您可能需要find另一个解决scheme…