我正在尝试将数据过滤器应用于我的XLSX文件中的B列, 这是我的代码:
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
from openpyxl import load_workbook
def convert_csv():
for csvfile in glob.glob(os.path.join('.', '*.csv')):
newfile = csvfile[:-4]
workbook = Workbook(newfile + '.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
workbook.close()
wb = load_workbook('report.xlsx')
ws = wb.active
#ws.auto_filter.ref = 'B:B'
ws.auto_filter.add_filter_column(1, '501', blank=False)
print ws.auto_filter.filter_columns
wb.save('outgoing.xlsx')
我想要实现的是将CSV文件转换为XLSX(可以) 然后将数据过滤器应用于具有特定val的列(在我的情况下,我想仅过滤得到'501'或'502的行。)
如果我取消注释
,我可以将数据过滤器添加到列中#ws.auto_filter.ref = 'B:B'
然后该文件不再可读。 我试过阅读OpenPyxl的文档,但这没有多大帮助。
由于
- 已解决! - 几乎在那里, 正确的代码是:
ws.auto_filter.ref = 'B:B'
ws.auto_filter.add_filter_column(0, ['501','502'], blank=False)
列号(0)是我之前设置的参考结果, 因为我只设置了1个要过滤的列(B:B),所以我正在处理第0列 如果我将A:B设置为我的范围并仍想过滤B,我会按照我的想法使用第1列。