鱼C论坛

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

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

[复制链接]
发表于 2023-4-23 21:40:27 | 显示全部楼层 |阅读模式
50鱼币
  1. from openpyxl import Workbook

  2. wb = Workbook()
  3. ws = wb.active

  4. data = [
  5.     ["Fruit", "Quantity"],
  6.     ["Kiwi", 3],
  7.     ["Grape", 15],
  8.     ["Apple", 3],
  9.     ["Peach", 3],
  10.     ["Pomegranate", 3],
  11.     ["Pear", 3],
  12.     ["Tangerine", 3],
  13.     ["Blueberry", 3],
  14.     ["Mango", 3],
  15.     ["Watermelon", 3],
  16.     ["Blackberry", 3],
  17.     ["Orange", 3],
  18.     ["Raspberry", 3],
  19.     ["Banana", 3]
  20. ]

  21. for r in data:
  22.     ws.append(r)

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

  25. wb.save("filtered.xlsx")
复制代码


这是官方的一段代码,官方文档也说了这段代码实现效果是:”这将向文件添加相关说明,但既不过滤也不排序“,那么问题来了,他不给我筛选结果我又如何提取出筛选后的数据呢?
我最终目的是要先进行筛选,然后复制筛选后的数据到另一个工作表中。
最佳答案
2023-4-23 21:40:28
你可以通过以下方法在使用openpyxl模块时筛选并提取数据:

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

下面是一个示例代码:

  1. from openpyxl import Workbook

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

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

  6. # 向工作表中添加数据
  7. data = [
  8.     ["Fruit", "Quantity"],
  9.     ["Kiwi", 3],
  10.     ["Grape", 15],
  11.     ["Apple", 3],
  12.     ["Peach", 3],
  13.     ["Pomegranate", 3],
  14.     ["Pear", 3],
  15.     ["Tangerine", 3],
  16.     ["Blueberry", 3],
  17.     ["Mango", 3],
  18.     ["Watermelon", 3],
  19.     ["Blackberry", 3],
  20.     ["Orange", 3],
  21.     ["Raspberry", 3],
  22.     ["Banana", 3]
  23. ]

  24. for r in data:
  25.     ws.append(r)

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

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

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

  35. # 保存工作簿
  36. wb.save("filtered.xlsx")
复制代码


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

最佳答案

查看完整内容

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

使用道具 举报

发表于 2023-4-23 21:40:28 | 显示全部楼层    本楼为最佳答案   
你可以通过以下方法在使用openpyxl模块时筛选并提取数据:

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

下面是一个示例代码:

  1. from openpyxl import Workbook

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

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

  6. # 向工作表中添加数据
  7. data = [
  8.     ["Fruit", "Quantity"],
  9.     ["Kiwi", 3],
  10.     ["Grape", 15],
  11.     ["Apple", 3],
  12.     ["Peach", 3],
  13.     ["Pomegranate", 3],
  14.     ["Pear", 3],
  15.     ["Tangerine", 3],
  16.     ["Blueberry", 3],
  17.     ["Mango", 3],
  18.     ["Watermelon", 3],
  19.     ["Blackberry", 3],
  20.     ["Orange", 3],
  21.     ["Raspberry", 3],
  22.     ["Banana", 3]
  23. ]

  24. for r in data:
  25.     ws.append(r)

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

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

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

  35. # 保存工作簿
  36. wb.save("filtered.xlsx")
复制代码


这段代码首先创建一个新的工作表,然后遍历原始工作表的所有行。如果行满足筛选条件,它将被添加到新的工作表中。最后,工作簿被保存为filtered.xlsx文件。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 22:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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