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 - 调用接口合并文件夹下多个Excel表的更多相关文章
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- Python——合并指定文件夹下的所有excel文件
前提:该文件夹下所有文件有表头且具有相同的表头. import glob # 同下 from numpy import * #请提前在CMD下安装完毕,pip install numppy impor ...
- python删除某一文件夹下的重复文件
#2022-10-28 import hashlib import os import time def getmd5(filename): """ 获取文件 md5 码 ...
- Python脚本:删除文件夹下的重复图片,实现图片去重
近期在整理相册的时候,发现相册中有许多重复图片,人工一张张筛查删除太枯燥,便写下这个脚本,用于删除文件夹下重复的图片. 第一部分:判断两张图片是否相同 要查找重复的图片,必然绕不开判断两张图片是否相同 ...
- 批量将制定文件夹下的全部Excel文件导入微软SQL数据库
以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...
- Python如何读取指定文件夹下的所有图像
(1)数据准备 数据集介绍: 数据集中存放的是1223幅图像,其中756个负样本(图像名称为0.1~0.756),458个正样本(图像名称为1.1~1.458),其中:"."前的标 ...
- Python 循环删除指定文件夹下所有的.longtian类型文件
# -*- coding: utf-8 -*- import os #遍历文件夹删除文件 def traversing_dir(rootDir): #遍历根目录 for root,dirs,files ...
- python实现压缩当前文件夹下的所有文件
import os import zipfile def zipDir(dirpath, outFullName): ''' 压缩指定文件夹 :param dirpath: 目标文件夹路径 :para ...
- 合并文件夹里多个excel
Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As workbook, WbN As String Dim G As Long ...
随机推荐
- Leetcode——回溯法常考算法整理
Leetcode--回溯法常考算法整理 Preface Leetcode--回溯法常考算法整理 Definition Why & When to Use Backtrakcing How to ...
- DrQA 阅读维基百科来回答开放问题 Reading Wikipedia to Answer Open-Domain Questions
DrQA 是一个阅读理解系统用在开放领域问答.特别的,DrQA 针对一个机器阅读任务.在这个列表里,我们为一个潜在非常大的预料库中搜索一个问题的答案.所以,这个系统必须结合文本检索和机器文本理解. 项 ...
- [Java8教程]Java8新特性进阶集合
Java8新特性进阶集合 基于 AOP 抽离方法的重复代码 Java8:当 Lambda 遇上受检异常 Java8:对字符串连接的改进 Java8:Java8 中 Map 接口的新方法 Java8:当 ...
- WeChat-SmallProgram:组件的业务 slot 的使用
1.调用组件向自定义组件插入内容,使用 slot 在自定义模板中有一对 <view><slot></slot></view> 这里是干什么用的呢? 在 ...
- coding++:thymelef 模板报错 the entity name must immediately follow the '&' in the entity reference
thymelef模板里面是不能实用&符号的 要用&转义符代替,官网也有文档说明可以用官方的通配符代替, 官方文档 http://www.thymeleaf.org/doc/tutori ...
- 使用datasest属性改变样式
使用datasest属性改变样式 传统做法 对于html中的标签我们可以自定义标签中的属性,例如给input加一个aaa属性 <input type="text" aaa=& ...
- 移动自动化appium(2)- Allure报告使用详解
6 Allure报告 6.1 Allure介绍 Allure是一个独立的报告插件,生成美观易读的报告,比之前的html好看,目前支持的语言:Java.PHP.Ruby.Python.C#等 6.2 A ...
- Java实验五参考答案
1.找错误 btOK.setOnAction( new EventHandler<ActionEvent> { public void handle (ActionEvent e) { S ...
- ANTLR随笔(一)
学习背景 最近做项目需要开发一个类似Graphql的简单版的自定义查询功能. 功能主要是通过前端自定义的复查询条件来控制后端的查询字段以及最终返回的JSON格式. 最初准备直接使用Graphql实现但 ...
- 1-1. OSS/ALSA 声卡的驱动与配置和 Madplay 嵌入式播放器的移植
报警子系统 一. OSS/ALSA 声卡的驱动与配置 声卡驱动中传统的OSS构架在02年被收购后即不开源,并且OSS的混音效果不好->因此ALSA构架孕育而生. ALSA(高级音频构架,目前应用 ...