excel 具有过滤列功能的文件

excel file with the ability to filter columns

我需要创建 excel 可以过滤的列。

更喜欢使用 openpyxl,因为我已经使用 StyleFrame 来设置 excel 的样式。

example

此代码使用 xlwt。 它写行和列。

import xlwt

def writelineSimple(shet,line, lstLine):
    col=0
    for elem in lstLine:
        shet.write(line, col, elem)
        col=col+1

def writecolum(shet,line,col, lstLine):
    for elem in lstLine:
        shet.write(line, col, elem)
        line=line+1

def writeline(shet,line,col, lstLine):
    for elem in lstLine:
        shet.write(line, col, elem)
        col=col+1


book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")

writelineSimple(sheet1,0,["col1","col2","col3","col4","col5"])
writelineSimple(sheet1,1,["writelineSimple1","writelineSimple2"])
writeline(sheet1,3,3,["writeline1","writeline2","writeline3"])
writecolum(sheet1,5,5,["writecolum1","writecolum2","writecolum3"])


book.save("myfirstgeneratedexcel.xls")

myfirstgeneratedexcel.xls

col1    col2    col3    col4    col5    
writelineSimple1    writelineSimple2                

            writeline1  writeline2  writeline3

                    writecolum1
                    writecolum2
                    writecolum3

这是使用 StyleFrame 的解决方案,我不得不使用索引为 0 的 "row_to_add_filters" 来向列添加过滤器....

from StyleFrame import StyleFrame, colors

excel_writer = StyleFrame.ExcelWriter('example.xlsx')
sf = StyleFrame({'a': [1, 2, 3], 'b': [1, 1, 1], 'c': [2, 3, 4]})
sf.apply_column_style(cols_to_style=['a', 'c'], protection=True, style_header=True)
sf.apply_style_by_indexes(indexes_to_style=2, cols_to_style='b', bg_color=colors.yellow, protection=True)
sf.to_excel(excel_writer=excel_writer, row_to_add_filters=0, columns_and_rows_to_freeze='B2', allow_protection=True)
excel_writer.save()