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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
Python验证码识别的方法
Jul 10 Python
Python聚类算法之基本K均值实例详解
Nov 20 Python
django框架如何集成celery进行开发
May 24 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
Python工厂函数用法实例分析
May 14 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
详解python路径拼接os.path.join()函数的用法
Oct 09 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
python实现银行实战系统
Feb 26 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 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分页实例代码分享
2011/07/28 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
使用python实现baidu hi自动登录的代码
2013/02/10 Python
基python实现多线程网页爬虫
2015/09/06 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
pandas数据处理之绘图的实现
2020/06/15 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
债务追讨律师函
2015/06/24 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书