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动态加载模块的3种方法
Nov 22 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
python单例模式实例解析
Aug 28 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
python实现文件的分割与合并
Aug 29 Python
如何在python中实现随机选择
Nov 02 Python
python plotly画柱状图代码实例
Dec 13 Python
python实现简单飞行棋
Feb 06 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
Python timeit模块原理及使用方法
Oct 10 Python
一行Python命令实现批量加水印
Apr 07 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
Python 常用string函数详解
2016/05/30 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
Delphi软件工程师试题
2013/01/29 面试题
校长先进事迹材料
2014/02/01 职场文书
植树节标语
2014/06/27 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
python 实现图片特效处理
2022/04/03 Python
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python
DQL数据查询语句使用示例
2022/12/24 MySQL