用 Python 让 Excel 快速按条件筛选数据

用 Python 让 Excel 快速按条件筛选数据

本文即使用python实现excel快速筛选数据
用 Python 让 Excel 快速按条件筛选数据_第1张图片

有一张 12 个月份的产品销售情况表。

安装所需的 Python 第三方库
xlwings 的特色:

  • xlwings 能够非常方便地读写 Excel 文件中的数据,并且能够进行单元格格式的修改
  • 可以和 Matplotlib 以及 Pandas 无缝连接
  • 可以调用 Excel 文件中 VBA 写好的程序,也可以让 VBA 调用用 Python 写的程序
  • 开源免费,一直在更新

导入 xlwings:

import xlwings as xw

通过 Python 启动 Excel 文件

  1. 打开 Excel 程序
app =xw.App(visible=True,add_book=False)

其中参数 visible(表示处理过程是否可视,也就是处理 Excel 的过程会不会显示出来),add_book(是否打开新的 Excel 程序,也就是是不是打开一个新的 excel 窗口)。

  1. 打开 Excel 文件
workbook = app.books.open("2020 XX 公司销售表汇总表.xlsx")
  1. 获取所有的表格
sheets_list = workbook.sheets
  1. 设置筛选条件
select_value = '江西省'
select_value1 = '博士'
  1. 新增 Sheet 存在筛选数据
qxs_excel = workbook.sheets.add(select_value)

自定义 Python 遍历 Excel 的函数

  1. 新建数据列表,将数据添加到列表中
range_value_list = []
  1. 自定义单一 Sheet 数据读取类
    def readrange(excel):
        for i in range(2,1000): #我的数据每张 Sheet 表最多只有 1000 行,所以设置的是 1000

            #单个表格字符串
            select_sheet_value = "E"+str(i)
            select_sheet_value1 = "C"+str(i)
            #整行表格字符串
            str_sheet1 = "A"+str(i)+":"+"E"+str(i)

            select_value_sheet = excel.range(select_sheet_value).value
            select_value_sheet1 = excel.range(select_sheet_value1).value
            if select_value_sheet == select_value and select_value_sheet1 == select_value1:#这里设置搜索条件判断,这里是表示两个筛选条件同时满足才会存入数据列表
                str_value_row = excel.range(str_sheet1).value
                range_value_list.append(str_value_row)

    for excel in sheets_list:
        readrange(excel)

将数据写入新的汇总表里

  1. 首先写入标题数据
  qxs_excel.range("A1:F1").value = ["姓名","级别","学历","薪资","地址"]
  1. 循环写入数据列表数据到汇总表中
    flag = 1   #因为计算机从 0 开始,0 行已经写入标题,所以这里是 1;如果有多行标题,根据实际情况设置
    for i in range_value_list:
        flag += 1
        #整行表格字符串
        str_sheet1 = "A"+str(flag)+":"+"E"+str(flag)
        qxs_excel.range(str_sheet1).value = i

运行之后的效果如下:
用 Python 让 Excel 快速按条件筛选数据_第2张图片

你可能感兴趣的:(数据分析,python数据分析,exel)