前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python优化办公(excel)02

python优化办公(excel)02

原创
作者头像
大大刺猬
修改2018-09-06 16:20:39
6130
修改2018-09-06 16:20:39
举报
文章被收录于专栏:大大刺猬大大刺猬大大刺猬

功能说明:根据本月的某些行 找到 对应上月的相应行,在比较其某些列的不同,把不同之处标记在本月的某对应列

代码:

import time
startt = time.time()
import win32com.client as win32
import os
import pandas as pd
#获取需要比较的月份的新旧
def get_old_new_excel():
    need_exc = []
    for i in os.listdir():
        if len(i.split('月')[0].split('年')) > 1:
            need_exc.append(i)
    old_month = need_exc[0]
    new_month = need_exc[1]
    if int(need_exc[1].split('月')[0].split('年')[0]) < int(need_exc[0].split('月')[0].split('年')[0]):
        old_month = need_exc[1]
        new_month = need_exc[0]
    elif int(need_exc[1].split('月')[0].split('年')[0]) == int(need_exc[0].split('月')[0].split('年')[0]) and int(need_exc[1].split('月')[0].split('年')[1]) < int(need_exc[0].split('月')[0].split('年')[1]):
        old_month = need_exc[1]
        new_month = need_exc[0]
    return old_month,new_month
# 读取数据
print('pandas正在读取 ',get_old_new_excel()[0],' 和 ',get_old_new_excel()[1],' 的数据\nwaiting.......')
excel_old = pd.DataFrame(pd.read_excel(get_old_new_excel()[0],sheetname='塔类'))
excel_new = pd.DataFrame(pd.read_excel(get_old_new_excel()[1],sheetname='塔类'))
excel = win32.Dispatch('Excel.Application')
excel.Visible = True
# need_col= [17,21,24,51,61,73,77,84,89,99,109,113,117,121,125]
need_col= ['Q','U','Y','AW','BI','BU','BY','CF','CK','CU','DE','DI','DM','DQ','DU','EG']
print('win32com正在读取 ',get_old_new_excel()[0],' 和 ',get_old_new_excel()[1],' 的数据\nwaiting.......')
Excel_old = excel.Workbooks.Open(os.getcwd()+'\\'+ get_old_new_excel()[0])
Excel_new = excel.Workbooks.Open(os.getcwd()+'\\'+ get_old_new_excel()[1])
Excel_old_Sheet = Excel_old.Worksheets('塔类')
Excel_new_Sheet = Excel_new.Worksheets('塔类')
print('读取数据完成,即将比较数据')
#开始比较,先找到需要比较的行 i  ,再与上月的同行 old_index相比较 ,一样则执行操作
for i in excel_new.loc[excel_new['产品服务费与上月相比是否变化'] == '是'].index.tolist(): 
    i = int(i + 2)
    print('正在比较第 ',i,' 行')
    new_b = Excel_new_Sheet.Cells(i,2).value
    old_index = int(excel_old.loc[excel_old['产品业务确认单编号'] == new_b].index.tolist()[0]) + 2
    cha_ju = ''
    for lie in need_col:
        if Excel_new_Sheet.Cells(i,lie).value != Excel_old_Sheet.Cells(old_index,lie).value:
            Excel_new_Sheet.Cells(i,lie).Interior.ColorIndex = 6
            cha_ju = cha_ju + str(lie) + ' '
        else:
            continue
    Excel_new_Sheet.Cells(i,'EB').value = cha_ju
#保存,退出,总结,暂停给用户看
print('比较完成,正在保存并退出....')
Excel_old.save
Excel_old.close
Excel_new.save
Excel_new.close
excel.Visible = 0
stopt = time.time()
print('一共比较 ',len(excel_new.loc[excel_new['产品服务费与上月相比是否变化'] == '是'].index.tolist()),' 行,共花费大约',(stopt - startt)/60,'分钟')
os.system('pause')

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档