python 把EXCEL 数据 从日期按年份分组筛选到新sheet

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import openpyxl
import datetime
import time

year_list = [2013, 2014, 2015, 2016, 2017, 2018]
file_path = r"F:/test"
file_name = "数据按年份筛查到新的工作薄.xlsx"
file_result = os.path.join(file_path, file_name)


def excel():
    """
    """
    wb = openpyxl.load_workbook(file_result)  #  首先获取excel文件生成对象wb 使用openpyxl.load_workbook 方法
    sh = wb.active  #  使用wb中的active方法获取当前工作薄:btc 生成新的对象sh
    index = 0  #  设置一个数字变量之后会用到
    for i in range(len(year_list)): # 循环6次,6次来源于year_list列表长度
        count = 2 # 定义一个数字变量 后面会用到
        sh1 = wb.create_sheet(str(year_list[index])) # 使用使用wb.create 方法创建工作薄名称。名称为列表中的值,index是上面定义的数字变量
        
        for rows in sh.rows:   # 循环btc工作薄表中的内容
            if rows[1].coordinate != "B1" and datetime.datetime.strptime(rows[1].value, '%Y/%m/%d %H:%M:%S').year == year_list[index]:
              # 把日期和金额去除从第二行开始循环, 使用datetime模块将获取的value1的时间字符串解析为时间元组。 最后取年值进行匹配
                # print(rows[0].value, rows[1].value)
                sh1["A1"] = "编号"
                sh1["B1"] = "日期"
                sh1["C1"] = "姓名"
                sh1["D1"] = "电话"
                sh1["E1"] = "住址"
                sh1["A" + str(count)] = rows[0].value # A + str(count) 第二行开始 写入
                sh1["B" + str(count)] = rows[1].value
                sh1["C" + str(count)] = rows[2].value
                sh1["D" + str(count)] = rows[3].value
                sh1["E" + str(count)] = rows[4].value

                # print("in sh:", sh1["A" + str(count)].value, sh1["B" + str(count)].value)
                print(f"正在分析{year_list[index]}年数据.....")
                count += 1 # 没完成一次循环 count + 1
        index += 1 # 同时index + 1
    wb.save("F:/test/数据按年份筛查到新的工作薄-已处理.xlsx") # 当函数全部执行完成后,使用wb.save 保存即可。
#print(wb)
if __name__ == "__main__":
   start_time = time.time()
   excel()
   print(f"分析完成,用时时间为{time.time() - start_time}秒")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值