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+mysql实现简单的web程序
Sep 11 Python
Python端口扫描简单程序
Nov 10 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python实现远程控制电脑
May 23 Python
python pandas模块基础学习详解
Jul 03 Python
Django异步任务线程池实现原理
Dec 17 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
Python如何生成xml文件
Jun 04 Python
python 实现波浪滤镜特效
Dec 02 Python
利用python进行文件操作
Dec 04 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
pandas取dataframe特定行列的实现方法
May 24 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 cookie 登录验证示例代码
2009/03/16 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
php动态函数调用方法
2015/05/21 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
新浪中用来显示flash的函数
2007/04/02 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
python用户管理系统
2018/03/13 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python科学计算之narray对象用法
2019/11/25 Python
linux 下selenium chrome使用详解
2020/04/02 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
介绍一下代理模式(Proxy)
2014/10/17 面试题
办加油卡单位介绍信
2014/01/09 职场文书
意向书范本
2014/07/29 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
西游记读书笔记
2015/06/25 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
Java实现二分搜索树的示例代码
2022/03/17 Java/Android