python操作excel,汇总n个Excel的内容到一个总表

需求描述

需求来自同事要做表格汇总,N个人需要每日填写各自更新的内容到一个表格中到不同位置,同事最初都是在手动操作,费时还容易出错。

办公自动化实现

其实做好规则,这个任务自动化实现起来并不难,我最初估计也就十几行代码到事。要求每人复制一下总表,命名add自己到名字,每人每日更新到自己到表格中,把所有人表格放到一个文件夹下(文件夹与主程序同级),遍历读出对应位置到内容,再写到总表到对应位置即可。当然,每个人的内容位置需要提前确定,或者有规律每日比前一日增加一列。本文示例代码只写了固定位置,如有其它实际应用场景是不固定的,只要找好规律做个变量即可。

代码

代码不算难,主要两个库,一个自带的os用于列出每个文件,一个openpyxl操作excel,具体细节我不展开了,可以为有相似需求的同学做个参考,注意路径修改成自己的。懂的都懂,不懂的欢迎讨论,上代码:

import os
import openpyxl

path = './xls/'
files = os.listdir(path)
summary_xls = './summary_0.xlsx'

# 用集合映射不同文件需要copy的内容的不同位置

loc = {
		'test1':[6,12,31,35],
		'test2':[12,13,31,35],
		'test3':[15,17,31,35],
		'test4':[17,18,31,35]
	}

book_summary = openpyxl.load_workbook(summary_xls)
sheet_summary = book_summary.active

for file in files:
	for key in loc.keys():
		if key in file:
			r1 = loc[key][0]
			r2 = loc[key][1]
			c1 = loc[key][2]
			c2 = loc[key][3]
	
			workbook = openpyxl.load_workbook(path+file)
			sheet = workbook.active
			row_data = [sheet.cell(row=i, column=j).value for i in range (r1,r2) for j in range (c1,c2)]
	
			diff = c2-c1
			for i, value in enumerate(row_data):
				sheet_summary.cell(row=i//diff+r1, column=i%diff+c1).value = value

# book_summary.save(summary_xls)
book_summary.save('./summary_1.xlsx')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值