Python调用接口合并Excel表代码实例

 更新时间:2020年03月31日 12:02:35   作者:Johnthegreat  
这篇文章主要介绍了Python调用接口合并Excel表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在工作中经常遇到需要打开许多个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',如下:

目前发现有两个需要注意的问题:

1. 需要合并的文件中不能有隐藏的表格,否则,会跳过该文件;

2. 文件名中不可以字符意外的标记,比如括号之类的。

最后,调用接口的速度有点慢,以后有机会还是看openpyxl是否可以实现一下,含格式的合并。xlwings是类似的实现,估计速度也差不多的慢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python如何提取html中文本到txt

    Python如何提取html中文本到txt

    这篇文章主要介绍了Python如何提取html中文本到txt问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python+Tkinter实现RGB数值转换为16进制码

    Python+Tkinter实现RGB数值转换为16进制码

    这篇文章主要为大家详细介绍了Python如何利用Tkinter编写一个RGB数值转换为16进制码的小工具,文中的示例代讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • python爬虫爬取快手视频多线程下载功能

    python爬虫爬取快手视频多线程下载功能

    这篇文章主要介绍了python爬虫爬取快手视频多线程下载功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python内置函数zip详解

    python内置函数zip详解

    这篇文章主要为大家介绍了python内置函数zip,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python代码打包工具cx_Freeze的安装及用法详解

    python代码打包工具cx_Freeze的安装及用法详解

    cx_Freeze是一个流行的Python库,它可以将Python脚本及其依赖项打包成独立的可执行文件,支持多平台(如Windows、Linux和macOS),本文将结合实际案例,详细介绍cx_Freeze的安装、配置和使用方法,需要的朋友可以参考下
    2024-08-08
  • Python opencv操作深入详解

    Python opencv操作深入详解

    这篇文章主要介绍了Python opencv操作深入详解,文中整理的比较详细,有感兴趣的同学可以学习下
    2021-03-03
  • Python3.5内置模块之random模块用法实例分析

    Python3.5内置模块之random模块用法实例分析

    这篇文章主要介绍了Python3.5内置模块之random模块用法,结合实例形式分析了Python3.5 random模块生成随机数与随机字符串相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • Python倒排索引之查找包含某主题或单词的文件

    Python倒排索引之查找包含某主题或单词的文件

    倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。这篇文章主要介绍了Python倒排索引之查找包含某主题或单词的文件,需要的朋友可以参考下
    2019-11-11
  • python爬虫 2019中国好声音评论爬取过程解析

    python爬虫 2019中国好声音评论爬取过程解析

    这篇文章主要介绍了python爬虫 2019中国好声音评论爬取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python一行代码解决矩阵旋转的问题

    Python一行代码解决矩阵旋转的问题

    今天小编就为大家分享一篇Python一行代码解决矩阵旋转的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论