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 相关文章推荐
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Django在win10下的安装并创建工程
Nov 20 Python
Python断言assert的用法代码解析
Feb 03 Python
Python 函数基础知识汇总
Mar 09 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
Flask框架单例模式实现方法详解
Jul 31 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
python让函数不返回结果的方法
Jun 22 Python
Python如何配置环境变量详解
May 18 Python
Python中可变和不可变对象的深入讲解
Aug 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
再次研究下cache_lite
2007/02/14 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP学习笔记之session
2018/05/06 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python3爬取数据至mysql的方法
2018/06/26 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python request post上传文件常见要点
2020/11/20 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
.NET面试10题
2014/02/24 面试题
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
晚宴邀请函范文
2014/01/15 职场文书
大学生个人学年总结
2015/02/15 职场文书
青年教师听课心得体会
2016/01/15 职场文书
MySQL池化框架学习接池自定义
2022/07/23 MySQL