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的Flask框架中实现简单的登录功能的教程
Apr 20 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
Python线程下使用锁的技巧分享
Sep 13 Python
python儿童学游戏编程知识点总结
Jun 03 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
解析PyCharm Python运行权限问题
Jan 08 Python
Python短信轰炸的代码
Mar 25 Python
django haystack实现全文检索的示例代码
Jun 24 Python
Python如何执行精确的浮点数运算
Jul 31 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
python_tkinter事件类型详情
Mar 20 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
Python中除法使用的注意事项
2014/08/21 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python 登录网站详解及实例
2017/04/11 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python一个简单的通信程序(客户端 服务器)
2019/03/06 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
Django数据库操作之save与update的使用
2020/04/01 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
理财投资建议书
2014/03/12 职场文书
对孩子的寄语
2014/04/09 职场文书
投标单位介绍信
2015/05/05 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
redis数据一致性的实现示例
2022/03/18 Redis
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python