这道题太难了 发表于 2023-4-23 21:40:27

关于Python使用openpyxl模块进行筛选的问题

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

data = [
    ["Fruit", "Quantity"],
    ["Kiwi", 3],
    ["Grape", 15],
    ["Apple", 3],
    ["Peach", 3],
    ["Pomegranate", 3],
    ["Pear", 3],
    ["Tangerine", 3],
    ["Blueberry", 3],
    ["Mango", 3],
    ["Watermelon", 3],
    ["Blackberry", 3],
    ["Orange", 3],
    ["Raspberry", 3],
    ["Banana", 3]
]

for r in data:
    ws.append(r)

ws.auto_filter.ref = "A1:B15"
ws.auto_filter.add_filter_column(0, ["Kiwi", "Apple", "Mango"])

wb.save("filtered.xlsx")

这是官方的一段代码,官方文档也说了这段代码实现效果是:”这将向文件添加相关说明,但既不过滤也不排序“,那么问题来了,他不给我筛选结果我又如何提取出筛选后的数据呢?
我最终目的是要先进行筛选,然后复制筛选后的数据到另一个工作表中。

isdkz 发表于 2023-4-23 21:40:28

你可以通过以下方法在使用openpyxl模块时筛选并提取数据:

首先,我们需要在原工作表上应用筛选条件。然后,我们可以遍历工作表的所有行,检查每行是否满足筛选条件。如果满足条件,我们将该行添加到新的工作表中。

下面是一个示例代码:

from openpyxl import Workbook

# 创建一个新的工作簿
wb = Workbook()

# 获取当前活动的工作表
ws = wb.active

# 向工作表中添加数据
data = [
    ["Fruit", "Quantity"],
    ["Kiwi", 3],
    ["Grape", 15],
    ["Apple", 3],
    ["Peach", 3],
    ["Pomegranate", 3],
    ["Pear", 3],
    ["Tangerine", 3],
    ["Blueberry", 3],
    ["Mango", 3],
    ["Watermelon", 3],
    ["Blackberry", 3],
    ["Orange", 3],
    ["Raspberry", 3],
    ["Banana", 3]
]

for r in data:
    ws.append(r)

# 定义筛选条件
filter_conditions = ["Kiwi", "Apple", "Mango"]

# 创建一个新的工作表用于存储筛选后的数据
ws_filtered = wb.create_sheet("Filtered Data")

# 遍历原始工作表的所有行,检查每行是否满足筛选条件
for row in ws.iter_rows(min_row=2):
    fruit = row.value
    if fruit in filter_conditions:
      ws_filtered.append()

# 保存工作簿
wb.save("filtered.xlsx")


这段代码首先创建一个新的工作表,然后遍历原始工作表的所有行。如果行满足筛选条件,它将被添加到新的工作表中。最后,工作簿被保存为filtered.xlsx文件。
页: [1]
查看完整版本: 关于Python使用openpyxl模块进行筛选的问题