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实现提取百度搜索结果的方法
May 19 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
Python实现 版本号对比功能的实例代码
Apr 18 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
python递归下载文件夹下所有文件
Aug 31 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
Python中npy和mat文件的保存与读取
Apr 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和editplus正则表达式去除空白行
2015/04/17 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
js实现无缝轮播图
2020/03/09 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Zabbix实现微信报警功能
2016/10/09 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python 闭包的使用方法
2017/09/07 Python
Python最小二乘法矩阵
2019/01/02 Python
django下创建多个app并设置urls方法
2020/08/02 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
公司合作协议书范本
2014/04/18 职场文书
服务宗旨标语
2014/07/01 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
民事调解书范文
2015/05/20 职场文书
学前教育见习总结
2015/06/23 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript