Python调用接口合并Excel表代码实例


Posted in Python onMarch 31, 2020

在工作中经常遇到需要打开许多个excel表格,然后合并的需求,合并的同时要求格式必须原汁原味的保留。利用VBA代码可以比较轻松的解决,现在我们来看Python中如何实现。

上代码:

from openpyxl import Workbook
from win32com.client import Dispatch
import os
import datetime
 
 
def copy_excel_file(source_file_list, destination_file):
  run_app = Dispatch('Excel.Application')
  run_app.Visible = False # 改为True可以看到excel的打开窗口
 
  for file in source_file_list:
    source_workbook = run_app.Workbooks.Open(Filename=file)
    destination_workbook = run_app.Workbooks.Open(Filename=destination_file)
 
    source_workbook.Worksheets(1).Copy(Before=destination_workbook.Worksheets(1))
    destination_workbook.Close(SaveChanges=True)
 
  run_app.Quit()
 
 
class ParameterGenerator:
 
  def __init__(self):
    # self.directory_path = directory_path
    self.file_lists = []
 
  def creat_xlsx(self, directory_path):
    obj = Workbook()
    if not os.path.exists(directory_path + os.sep + 'joined'):
      os.mkdir(directory_path + os.sep + 'joined')
    date = str(datetime.datetime.today())[0:10]
    obj.save(directory_path + os.sep + 'joined' + os.sep + 'joined {}.xlsx'.format(date))
 
  def get_file_list(self, directory_path):
    entry_lists = os.scandir(directory_path)
    for entry_list in entry_lists:
      if entry_list.is_file():
        if '~$' not in entry_list.path:
          self.file_lists.append(entry_list.path)
    return self.file_lists
 
  def run(self, directory_path):
    file_lists = self.get_file_list(directory_path)
    self.creat_xlsx(directory_path)
    destination_file = str(self.get_file_list(directory_path + os.sep + 'joined')[-1])
    file_lists.pop(-1)
    return file_lists, destination_file
if __name__ == "__main__":
  directory_path = r'D:\Excel目录'
  param = ParameterGenerator()
  source_file_list, destination_file = param.run(directory_path)
  copy_excel_file(source_file_list, destination_file)

输出是文件夹下新建一个'joined‘的文件夹,里面有一个合并后的文件'joined xxxx-xx-xx.xlsx',如下:

Python调用接口合并Excel表代码实例

Python调用接口合并Excel表代码实例

目前发现有两个需要注意的问题:

1. 需要合并的文件中不能有隐藏的表格,否则,会跳过该文件;

2. 文件名中不可以字符意外的标记,比如括号之类的。

最后,调用接口的速度有点慢,以后有机会还是看openpyxl是否可以实现一下,含格式的合并。xlwings是类似的实现,估计速度也差不多的慢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中反射用法实例
Mar 27 Python
Python本地与全局命名空间用法实例
Jun 16 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python查询mysql,返回json的实例
Mar 26 Python
python3实现名片管理系统
Nov 29 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python实现图像的垂直投影示例
Jan 17 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
详解Python中list[::-1]的几种用法
Nov 16 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
Python如何批量获取文件夹的大小并保存
Mar 31 #Python
Django使用list对单个或者多个字段求values值实例
Mar 31 #Python
django实现模板中的字符串文字和自动转义
Mar 31 #Python
Python使用graphviz画流程图过程解析
Mar 31 #Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 #Python
基于python实现计算且附带进度条代码实例
Mar 31 #Python
Django values()和value_list()的使用
Mar 31 #Python
You might like
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JavaScript手机振动API
2016/06/11 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
售后主管岗位职责
2013/12/08 职场文书
团日活动总结
2014/04/28 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
老龄工作先进事迹
2014/08/15 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
教师辞职信范文
2015/02/28 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL