python - 使用 openpyxl 排序和自动过滤 Excel

标签 python excel openpyxl

我正在尝试使用 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 的回复起作用了,因为它将自动过滤器添加到我的电子表格中。但是,它仍然没有将排序条件添加到适当的列。

最佳答案

参见此处: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' 包含您要过滤的单元格范围。

关于python - 使用 openpyxl 排序和自动过滤 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614890/

相关文章:

python - 创建新工作表而不是使用现有工作表

python - 在 Python 中的标记化文本中查找多词术语

python - Django 中基于函数的中间件与基于类的中间件

excel - 将对象分配给集合: error '91' : Object variable or With block variable not set

excel - 有没有一种方法可以通过字符串变量将工作表的名称传递给 Sheet.select 函数?

python - 如何在 openpyxl 表中禁用自动过滤器?

Python SQLAlchemy - 更新子模型时更新父模型的时间戳

python - _portaudio.so : no matching architecture in universal wrapper

共享模式下的 Excel 下拉菜单

python - 使用 openpyxl 创建工作簿和工作表