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计算书页码的统计数字问题实例
Sep 26 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Python log模块logging记录打印用法解析
Jan 20 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python实现连连看游戏
Feb 14 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python pip安装模块提示错误解决方案
May 22 Python
python3的pip路径在哪
Jun 23 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 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数据采集的详解
2013/06/02 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
如何让CI框架支持service层
2014/10/29 PHP
PHP实现的简单日历类
2014/11/29 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
解读Python编程中的命名空间与作用域
2015/10/16 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
美国校园市场:OCM
2017/06/08 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
幼儿园元旦亲子活动方案
2014/02/17 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
校园之声广播稿
2015/08/18 职场文书
2016教师国培研修感言
2015/12/08 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL