现状描述:

因每天需要接收各个小组的工作日报,由我汇总到一个Excel里面,该Excel分成多个sheet展示。每个小组的日报复制粘贴容易出错,且重复性劳动,于是想用python来实现自动化拷贝。

需求描述:

把源Excel文件的内容全部拷贝至目标Excel文件里面,并保持格式不变。
1、各个小组的Excel汇总在一个Excel文件里,分成不同的sheet页面
2、汇总过后的Excel格式不变。如图。:

伪代码编辑:

1.我要知道是哪个目录
2.我要知道这个目录下面有哪些文件(即遍历文件夹内容)
3.选出符合我要求的Excel文件(排除我的目标Excel文件–汇总)
4.新建一个Excel文件叫汇总
5.把一个符合要求的Excel文件拷贝至汇总Excel里,并且每一个Excel装在不同的sheet里面,sheet命名为文件名称
6.复制的Excel文件要已源文件格式一致
7.保存新excel文件

以下代码是经过测试,已达到目的。不过还有待完善。
代码实现:
所在环境:windows10,python3.5.2,pycharm工具。
函数功能代码片:

# -*- coding: utf-8 -*-from openpyxl import Workbook;
from openpyxl import load_workbook;
import openpyxl;
import os;
from copy import  copy;
# 遍历指定目录,显示目录下的所有文件名
#os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下
# (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
# path:C:\Users\Desktop\跟踪日志20200424
def get_file_name(path):"""遍历该文件夹下的所有Excel文件:param path: 文件的路径:return:返回一个文件路径列表"""file_name_list =[];#文件名所在的路径fpath = [];for fpath, dirname, fname in os.walk(path):# print(fpath);if len(dirname) > 0:# 打印所有的文件夹名称print("打印所有的文件夹名称:", dirname);else:print("该%s文件路径下已无文件夹"%dirname);# 遍历文件名称for name in fname:# 把文件名和路径一起显示print(name);filename = os.path.join(fpath,name)if filename.endswith(".xlsx"):file_name_list.append(filename);return file_name_list;def create_excel(excel_path):"""新建一个Excel文件,叫汇总.xlsx:param excel_path: 创建目标Excel所在的路径:return: 返回一个成功标志的语句"""# excel_path= 'C:\Users\Desktop\跟踪日志20200424';os.chdir(excel_path);# 新建Excelwork_book = openpyxl.Workbook();work_book.save("跟踪汇总.xlsx");if os.path.exists(excel_path):return '该文件已成功创建';def excel_copy(src_filename,tag_filename):"""把源excel文件复制到目标Excel中的一个sheet里,源sheet名称作为目标sheet的名称,然后保存:param src_filename:源Excel文件名称:param tag_filename:目标Excel文件名称:return:"""# 获取源Excel文件所在的路径及其文件名src_file_workbook = openpyxl.load_workbook(filename=src_filename);# 获取源Excel文件的sheet名称src_file_sheet = src_file_workbook.worksheets[0];# 获取目标Excel文件名称,并把源Excel文件的sheet名为目标Excel文件的sheet名# 获取目标Excel文件所在的路径及其文件名tag_file_workbook = openpyxl.load_workbook(filename=tag_filename);sheet_copy = src_file_workbook.copy_worksheet(src_file_sheet);# 以源Excel文件的sheet名称在目标Excel文件创建一个同样的sheet名称# tag_file_sheet = tag_file_workbook.create_sheet(sheet_copy.title);tag_file_sheet = tag_file_workbook.create_sheet(src_file_sheet.title);'''遍历整个sheet行列的数据'''#读取源Excel文件的所有行for row in src_file_sheet:# 读取源Excel文件的所有列单元格for cell in row:tag_file_sheet[cell.coordinate].value = cell.value;#复制Excel样式if cell.has_style:tag_file_sheet[cell.coordinate].font = copy(cell.font)tag_file_sheet[cell.coordinate].border = copy(cell.border)tag_file_sheet[cell.coordinate].fill = copy(cell.fill)tag_file_sheet[cell.coordinate].number_format = copy(cell.number_format)tag_file_sheet[cell.coordinate].protection = copy(cell.protection)tag_file_sheet[cell.coordinate].alignment = copy(cell.alignment)wm = list(zip(src_file_sheet.merged_cells))  # 开始处理合并单元格if len(wm) > 0:for i in range(0, len(wm)):cell2 = str(wm[i]).replace('(<CellRange ', '').replace('>,)', '')print("CellRange : %s" % cell2)tag_file_sheet.merge_cells(cell2);tag_file_workbook.save(tag_filename);tag_file_workbook.close();src_file_workbook.close();

测试代码片.

from excel_copy import *;
excel_path= 'C:\\Users\\Desktop\\跟踪日志20200424\\20200424';
tag_filename = 'C:\\Users\\Desktop\\跟踪日志20200424\\跟踪汇总.xlsx'
# 文件所在路径
file_list= get_file_name(excel_path);
for flist in file_list:# if os.path.exists(excel_path):#     create_excel(excel_path);# else:#     os.remove(tag_filename);excel_copy(flist,tag_filename)

操作难点:

  1. 合并单元格有点难度

还有待完善已知的点:

1、如果目标Excel文件已存在该如何处理
2、如果源Excel文件里面有多个sheet该如何处理

Python自动化复制整张Excel表的内容相关推荐

  1. 【Python自动化办公】实现excel表中的数据批量导入到word指定位置(表格形式和下滑线形式)

    文章目录 案例1--word模板为表格 案例2--word模板中带有下划线形式 python docx基本操作 回到需求 案例1--word模板为表格 目的就是把excel中的数据,填入word模板中 ...

  2. python如何将多张excel表内数据求和_Excel批量操作,把你的工作效率提升10倍以上(1)...

    ​君子之交淡若水,小人之交甘若醴,君子淡以亲,小人甘以绝.--庄子 我们在日常工作中,遇到的最多的点,就是涉及到的内容很多,如果一个个的去查看,效率会非常慢,这时批量操作可以大大提升我们的工作效率,今 ...

  3. speedoffice表格如何快速复制整张工作表

    Excel可以方便地在同一文件快速复制工作表,那么如何操作呢?大家一起来看看吧. 1.打开软件表格,点击需要复制的工作表名称,右键,单击"复制". ​2.然后,在出现的如下&quo ...

  4. Python提取多张excel表上的数据,合并汇总到一张新表

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于财会学习联盟,作者:我是刀哥啊 私信回复"资料" ...

  5. python excel整合_如何整合100张excel表到一张excel表

    实际工作中经常会有整合多张excel表的需求,比如,对几张表合并时,我们有时候需要知道哪些原始数据是来自哪张表,例如,三张表是来自三个不同的人,我们可以把每张表用人名命名,这样就可以知道数据来自谁. ...

  6. python比较excel表格内容并提取_利用python提取多张excel表数据并汇总到同一张新表中...

    接上篇文章<如何用python实现excel中的vlookup功能?>,上篇说到,最近我在做一个小项目,也是用python操作excel解决财务审计工作上的一些问题,以便提高工作效率及其准 ...

  7. 0.进校的第一张Excel表:“住宿分布表” ——《Excel“智能化”之路》 系列文章

    <Excel"智能化"之路> 系列文章 系列目录    0.进校的第一张Excel表:"住宿分布表" 系列前言    转眼间就大二了,感觉自己还没学 ...

  8. 计算营业额python代码_真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集...

    原标题:真香还是假香,Python处理分析128张Excel表格竟然不到3秒?| 附案例数据集 作者:吹牛Z 本文转自公众号:数据不吹牛 更新完Pandas基础教程,后台有不少旁友留言,想要了解怎么用 ...

  9. python 实现截图自动存入Excel表

    python 实现截图自动存入Excel表 首先我先在桌面新建一个test.xls文件 import keyboard #监听按键库 from PIL import ImageGrab #图像处理库 ...

最新文章

  1. 修改nginx服务器类型
  2. hibernate连接mysql数据库步骤_Hibernate (操作步骤)
  3. Android studio怎么配置javadoc生成项目API
  4. python矩阵教程_numpy教程:矩阵matrix及其运算
  5. Java高级:mysqllimit两个参数
  6. java对象组合_java并发编程(三): 对象的组合
  7. GCD Timer事件的精度
  8. 7-28 搜索树判断(25 分)
  9. Android从 HttpResponse (或者InputStream) 获取字符串内容的代码
  10. Spring常用注解含义
  11. java做一个客房管理系统定制_基于JAVA的酒店客房管理系统的设计与实现
  12. linux 下 g++编译程序时,-I(大写i) 与-L(大写l)-l(小写l) 的作用
  13. 计算机控制面板空白,win7控制面板打开是空白的怎么办-解决控制面板打开之后空白的方法 - 河东软件园...
  14. 可以测试电脑网络速度的软件,介绍4种有用的Internet Speed软件应用程序,用于测试网络速度软件...
  15. 从0开始,手把手搭建个人网站
  16. python 爬取拉钩招聘数据
  17. Win10一周年更新正式版安装方法大全
  18. [词根词缀]reg/rept/rid/rod/rot等衍生单词
  19. The Pilots Brothers‘ refrigerator(思维)
  20. 如何在生产环境使用devtools?

热门文章

  1. 关于 非分页缓冲池 内存占用过高但任务管理器无程序 的特殊原因
  2. 【网络基础】网络是怎样连接的
  3. ant-design-vue pro怎样添加一个新的列表
  4. unity客户端版本后面个性化显示名字
  5. 几何平均数与算数平均数
  6. 国内PDM学习网站资源
  7. 2022年了,提前祝大家2023年快乐——2023年倒计时
  8. 每天进步一点点(一)
  9. 痛打小卖部,便利店的生意好做吗?
  10. 服务宕机问题排查思路