鱼C论坛

 找回密码
 立即注册
查看: 1886|回复: 1

[已解决]关于Python使用openpyxl模块进行筛选的问题

[复制链接]
发表于 2023-4-23 21:40:27 | 显示全部楼层 |阅读模式
50鱼币
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")

这是官方的一段代码,官方文档也说了这段代码实现效果是:”这将向文件添加相关说明,但既不过滤也不排序“,那么问题来了,他不给我筛选结果我又如何提取出筛选后的数据呢?
我最终目的是要先进行筛选,然后复制筛选后的数据到另一个工作表中。
最佳答案
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[0].value
    if fruit in filter_conditions:
        ws_filtered.append([cell.value for cell in row])

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

这段代码首先创建一个新的工作表,然后遍历原始工作表的所有行。如果行满足筛选条件,它将被添加到新的工作表中。最后,工作簿被保存为filtered.xlsx文件。

最佳答案

查看完整内容

你可以通过以下方法在使用openpyxl模块时筛选并提取数据: 首先,我们需要在原工作表上应用筛选条件。然后,我们可以遍历工作表的所有行,检查每行是否满足筛选条件。如果满足条件,我们将该行添加到新的工作表中。 下面是一个示例代码: 这段代码首先创建一个新的工作表,然后遍历原始工作表的所有行。如果行满足筛选条件,它将被添加到新的工作表中。最后,工作簿被保存为filtered.xlsx文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[0].value
    if fruit in filter_conditions:
        ws_filtered.append([cell.value for cell in row])

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

这段代码首先创建一个新的工作表,然后遍历原始工作表的所有行。如果行满足筛选条件,它将被添加到新的工作表中。最后,工作簿被保存为filtered.xlsx文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表