Python OpenPyxl列数据过滤器

时间:2015-12-29 10:52:26

标签: python excel openpyxl

我正在尝试将数据过滤器应用于我的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列。

0 个答案:

没有答案
相关问题