我正在尝试使用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的回复是在我的电子表格中添加了自动过滤器。但是,它仍然没有将排序条件添加到相应的列中。
根据文档,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'
以及要筛选的单元格的范围。相关问题 更多 >
编程相关推荐