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中的多重装饰器
Apr 11 Python
python图像处理之反色实现方法
May 30 Python
Python读取键盘输入的2种方法
Jun 16 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
python实现简易数码时钟
Feb 19 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python获取服务器响应cookie的实例
Dec 28 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
python redis 删除key脚本的实例
Feb 19 Python
python获取Linux发行版名称
Aug 30 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
Python Numpy库的超详细教程
Apr 06 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创建PDF中文文档
2006/10/09 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
jQuery实现电梯导航模块
2020/12/22 jQuery
vue 动态创建组件的两种方法
2020/12/31 Vue.js
python命令行参数sys.argv使用示例
2014/01/28 Python
python装饰器与递归算法详解
2016/02/18 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
django 将model转换为字典的方法示例
2018/10/16 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
医药专业推荐信
2013/11/15 职场文书
运动会广播稿400字
2014/01/25 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
利用Java连接Hadoop进行编程
2022/06/28 Java/Android