使用pthon汇总各部门的excel内容,主要思路:
1.使用pandas读入汇总表(b3df)和其中一个部门的表格内容(dedf)
2.填充pandas空值,使'项目名称','主管部门'列没有空值
3.使用xlwings打开汇总表(b3ws)和部门表(dews)
4.用b3df、dedf对比两个表中项目的行数是否一样,不一样则在汇总表(b3ws)插入行,使汇总表和部门表格(dews)一致
5.复制部门表格(dews)内容到汇总表(b3ws)
6.保存退出
汇总表格如下:
汇总A、B、C、D部门后的表格如下:
具体代码如下:
import pandas as pd
import xlwings as xw
def insertRow(zgfj,deFile,b3df,b3ws):
'''
'''
print('正在汇总:' + zgfj)
dedf = pd.read_excel(deFile,header=3)
dedf[['项目名称','主管部门']] = dedf[['项目名称','主管部门']].fillna(axis=0,method='ffill')
dewb = app.books.open(deFile)
dews = dewb.sheets[0]
#对比两个表的不同
df1 = pd.pivot_table(dedf[dedf['主管部门']==zgfj],values='责任单位',index='项目名称',aggfunc=[len])
df2 = pd.pivot_table(b3df[b3df['主管部门']==zgfj],values='责任单位',index='项目名称',aggfunc=[len])
df12 = df1 - df2
if df12.shape[0]:
diff = df12[df12[('len','责任单位')] != 0]
#两个表不同则修改excel表,使相同项目的行数相同
#if diff.shape[0]:
for xmmc in list(diff.index):
for r in range(1,b3ws.used_range.shape[0]+1):
if b3ws.range(r,2).value == xmmc:
if diff.loc[xmmc][0] > 0:
print(str(r+1) + ':' + str(int(r+diff.loc[xmmc][0])))
b3ws.api.rows(str(r+1) + ':' + str(int(r+diff.loc[xmmc][0]))).insert #插入部门多出的行
break
else:
b3ws.api.rows(str(r+1) + ':' + str(int(r-diff.loc[xmmc][0]))).delete #删除多余的行
break
#复制部门内容到汇总表
for xmmc in list(df2.index):
for r in range(1,b3ws.used_range.shape[0]+1):
if b3ws.range(r,2).value == xmmc:
#项目名称在部门excel表的行号
rfj = dedf[dedf['项目名称'] == xmmc].index[0] + 5
#需要插入的行数
rows = df1.loc[xmmc][0]
#复制部门excel表格项目名称所在行到汇总表
dews.api.rows(str(rfj) + ':' + str(rfj+rows-1)).Copy(b3ws.api.rows(str(r) + ':' + str(r+rows-1)))
break #因为项目名称唯一,复制后可跳出进行下一项目
if __name__ == '__main__':
#汇总表格文件
b3File = '汇总文件.xls'
#各部门表格文件所在位置
fjFile = {'B部门':'B部门.xls', 'A部门':'A部门.xls', 'C部门':'C部门.xls', 'D部门':'D部门.xls'}
app = xw.App(visible=False,add_book=False)
app.display_alerts = False
app.screen_updating = False
b3wb = app.books.open(b3File)
b3ws = b3wb.sheets[0]
b3df = pd.read_excel(b3File,header=3)
for zgfj,file in fjFile.items():
b3df[['项目名称','主管部门']] = b3df[['项目名称','主管部门']].fillna(axis=0,method='ffill') #填充合并单元格内容
#print(b3df.shape[0])
insertRow(zgfj,file,b3df,b3ws)
b3wb.save('汇总后文件.xls')
app.quit()
app.kill()
总结
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“python保留格式汇总各部门excel内容的实现思路”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年11月09日
2025年11月09日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]

