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 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
使用python+poco+夜神模拟器进行自动化测试实例
Apr 23 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
详解python中的lambda与sorted函数
Sep 04 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
php生成RSS订阅的方法
2015/02/13 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
浅谈js闭包理解
2019/04/01 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
深入理解python对json的操作总结
2017/01/05 Python
Python表示矩阵的方法分析
2017/05/26 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
化学实验员岗位职责
2013/12/28 职场文书
承诺书格式范文
2014/06/03 职场文书
力学专业求职信
2014/07/23 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript