用openpyx实现Excel的排序和自动过滤

2024-09-27 07:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用openpyxl和Python对电子表格进行排序。我读过文件,不太明白这一页。我希望它要么添加自动筛选下拉箭头,要么排序我的电子表格,它正在返回错误。这是我的密码

wb = openpyxl.load_workbook('report.xlsx')
ws = wb.active
ws['A2'] = "Store"
ws['B2'] = "Manager"
ws['C2'] = "Zone"
ws.column_dimensions.group('F','DU',hidden=True)
#ws.AutoFilter.add_sort_condition('C:C')
wb.save("report.xlsx")

根据文档,行“ws.AutoFilter.add_sort_condition('C:C')”应该会给出我想要的结果。(是的,我知道这是一个评论行。我的其余代码在没有这一行的情况下运行良好,因此我对其进行了注释。)

当我在代码中有这一行时,我得到一个错误-“Worksheet”对象没有“AutoFilter”属性,但是根据文档,它看起来像是这样。http://openpyxl.readthedocs.org/en/latest/_modules/openpyxl/worksheet/filters.html#AutoFilter

如果有人能帮我解释一下失败的原因或者文件的意思,那就太好了。

文件中的这句话让我特别困惑:

"Don't create auto filters by yourself. It is created by :class:~openpyxl.worksheet.Worksheet. You can use via :attr:~~openpyxl.worksheet.Worksheet.auto_filter attribute."

因为我也试过,但也失败了。

更新:@crussell的回复是在我的电子表格中添加了自动过滤器。但是,它仍然没有将排序条件添加到相应的列中。


Tags: 文件reportaddws排序错误conditionxlsx
3条回答

根据文档,openpyxl可以定义过滤器和/或排序,但不应用它们!

它们只能从Excel中应用

我没有一个完整的答案,但我发现一些有趣的东西时,使用过滤器。 我加了一个过滤柱, 如: ws.auto_filter.add_filter_column(1,{},True)

然后我打开结果的电子表格。列显示了过滤器!但数据实际上并没有在电子表格中过滤。我不得不点击“数据”标签,然后点击“重新应用”过滤器。

因此,看起来添加sort或filter列是可行的,只是它从未实际应用sort或filter。

我一直在寻找一个将应用过滤器的函数,但还没有任何运气。如果有人有想法,我很想听!

谢谢!

请看这里:http://openpyxl.readthedocs.org/en/latest/api/openpyxl.worksheet.html?highlight=auto_filter#openpyxl.worksheet.worksheet.Worksheet.auto_filter

auto_filter命令返回AutoFilter对象,因此在某种意义上它们是相同的。

你需要的是ws.auto_filter.ref = 'C1:C20' 以及要筛选的单元格的范围。

相关问题 更多 >

    热门问题