【创意、创造】用 Python pandas做一个读取Excel,再写入新的Excel小工具

发布时间 2023-12-15 18:23:47作者: 姚一^o^

Python很好很强大,1.5天时间,简化很多重复的劳动,哈哈~

 

import pandas as pd
import datetime as dt

def handleFrontEnd():
    # 处理【上周前端发版】开始
    sheet_front_end = pd.read_excel('D:\某前端原文件.xlsx',
                                    sheet_name='Sheet1', header=None)

    # columns=['时间','项目', '人员', '团队', '发布原因', '是否记为Bug']
    col_project = 0
    col_staff = 2
    sheet_front_end.dropna(inplace=True)
    print(sheet_front_end)

    for x in sheet_front_end.index:
        if (sheet_front_end.loc[x, col_project] == '项目'
                or 'xxx-' in sheet_front_end.loc[x, col_project]
                or 'xxxxx-' in sheet_front_end.loc[x, col_project]):
            sheet_front_end.drop(x, inplace=True)
            continue
        sheet_front_end.loc[x, col_staff] = sheet_front_end.loc[x, col_staff].strip()


    sheet_front_end.sort_values(by=col_staff, ascending=True, inplace=True)
  # 很方便地调整这几列前后顺序 cols
= sheet_front_end.columns[[1, 0, 2]] sheet_front_end = sheet_front_end[cols] df1 = pd.DataFrame(sheet_front_end) df1.to_excel('D:\上周前端发版 new.xlsx', index=False, header=None) # 处理【上周前端发版】结束 def handleBackEnd(): # 处理【上周后端发版】开始 sheet_back_end = pd.read_excel('D:\某后端原文件.xlsx', sheet_name='Sheet1', header=None) sheet_back_end.dropna(inplace=True) for x in sheet_back_end.index: sheet_back_end.loc[x, 2] = sheet_back_end.loc[x, 2].replace('Z', '').replace('T', ' ') if ('xxx-' in sheet_back_end.loc[x, 1] or 'xxxxx-' in sheet_back_end.loc[x, 1]): sheet_back_end.drop(x, inplace=True) continue # 生产发布时间,转为北京时间,时区+8。 original_time = dt.datetime.strptime(sheet_back_end.loc[x, 2], "%Y-%m-%d %H:%M:%S") sheet_back_end.loc[x, 3] = (original_time + dt.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S") # 容器 gang_num = sheet_back_end.loc[x, 1].count('-') pot_instance_name = sheet_back_end.loc[x, 1] if gang_num - 2 <= 0: sheet_back_end.loc[x, 4] = pot_instance_name else: tmp_col4_val = pot_instance_name[0:-16] if tmp_col4_val[-1] == '-': tmp_col4_val = tmp_col4_val[0:-1] sheet_back_end.loc[x, 4] = tmp_col4_val # owner,某所属人原表格文件,【被查找字段】注意依照【升序排序】。否则,VLOOKUP数据不准。 sheet_back_end.loc[x, 5] = '=VLOOKUP($E2,某所属人原表格文件!$D:$J,5)' # owner确认(是/否) sheet_back_end.loc[x, 6] = '=IF(VLOOKUP($E2,某所属人原表格文件!$D:$J,6)=0,"",VLOOKUP($E2,某所属人原表格文件!$D:$J,6))' # 使用情况 sheet_back_end.loc[x, 7] = '=IF(VLOOKUP($E2,某所属人原表格文件!$D:$J,7)=0,"",VLOOKUP($E2,某所属人原表格文件!$D:$J,7))' sheet_back_end.loc[x, 8] = '' sheet_back_end.loc[x, 9] = '' sheet_back_end.loc[len(sheet_back_end.index)] = ['原表格字段1', '原表格字段2', '原表格字段3', '生产发布时间', '容器', 'owner', 'owner确认(是/否)', '使用情况', '发布原因(含重启)', '是否记为Bug'] sheet_back_end.sort_values(by=3, ascending=False, inplace=True) print(sheet_back_end) df2 = pd.DataFrame(sheet_back_end) df2.to_excel('D:\上周后端发版 new.xlsx', index=False, header=None) # 处理【上周后端发版】结束 handleFrontEnd() handleBackEnd()