win32 复制多个 excel sheet 到 一个 新excel 中

news/2025/3/5 11:03:50/

在多线程里面使用win32com调用com组件的时候,需要用pythoncom.CoInitialize初始化一下。

最后还需要用pythoncom.CoUninitialize释放资源。

import win32com.client as win32
import pythoncomdef copy_all_sheets_to_single_file(source_files, destination_file):pythoncom.CoInitialize()excel = win32.gencache.EnsureDispatch("Excel.Application")excel.Visible = Falseexcel.DisplayAlerts = Falsetry:destination_workbook = excel.Workbooks.Add()destination_sheet = destination_workbook.Worksheets(1)destination_sheet2 = destination_workbook.Worksheets(2)row_offset = 0for index, source_file in enumerate(source_files):source_workbook = excel.Workbooks.Open(source_file)source_sheet = source_workbook.Worksheets("Sheet1")source_sheet2 = source_workbook.Worksheets("Sheet2")source_range = source_sheet.UsedRangesource_range2 = source_sheet2.UsedRangeif index != 0:add_number = 6else:add_number = 0source_range.Copy(destination_sheet.Range("A" + str(row_offset + 1 + add_number)))source_range2.Copy(destination_sheet2.Range("A" + str(row_offset + 1 + add_number)))row_offset += source_range.Rows.Countsource_workbook.Close(SaveChanges=False)  # 不保存更改,避免提示保存对话框destination_workbook.SaveAs(destination_file)except Exception as e:print(f"Error occurred: {str(e)}")finally:destination_workbook.Close()excel.Quit()excel.Application.Quit()win32.pythoncom.CoUninitialize()# 使用示例
source_files = ["路径/到/源文件1.xlsx", "路径/到/源文件2.xlsx", ..., "路径/到/源文件10.xlsx"]
destination_file = "路径/到/目标文件.xlsx"
# 使用示例
soure_file = r"C:\Users\Administrator\Documents\Book1.xlsx"
soure_file2 = r"C:\Users\Administrator\Documents\Book2.xlsx"
source_files = [soure_file, soure_file2]
destination_file = r"C:\Users\Administrator\Documents\Book_new.xlsx"copy_all_sheets_to_single_file(source_files, destination_file)# 使用示例
soure_file = r"C:\Users\Administrator\Documents\Book1.xlsx"
soure_file2 = r"C:\Users\Administrator\Documents\Book2.xlsx"
source_files = [soure_file, soure_file]
destination_file = r"C:\Users\Administrator\Documents\Book_new.xlsx"# copy_all_sheets_to_single_file(source_files, destination_file)

参考
https://yshblog.com/blog/57


http://www.ppmy.cn/news/983465.html

相关文章

c++的类与对象(上)

1.面向对象和面向过程初步认识 c语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题 c是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成 2.类的引…

SpringMVC路径匹配

SpringMVC路径匹配 SpringMVC支持Ant风格的路径 Ant是Apache下的一个构建(编译、测试、部署等)工具。即Ant风格源于Ant这个构建工具。 关于如何配置SpringMVC的各种配置文件和其中的注解使用可以参考 种类 1、?:表示任意的单个字符 controller RequestMapping…

vue。cli怎么使用自定义组件,会有哪些问题

在Vue CLI中使用自定义组件的步骤如下: 通过仔细检查以上问题并按照正确的步骤使用自定义组件,大多数问题都可以解决。此外,查看开发者工具的控制台输出和Vue警告信息,可以帮助你进一步调试和解决可能出现的问题 创建自定义组件&a…

ElasticSearch学习--自动补全

目录 自定义分词器 介绍 配置自定义分词器 拼音分词器的问题​编辑 总结 DSL自动补全查询 RestAPI实现自动补全 自定义分词器 介绍 自定义分词器只在当前库中有效 配置自定义分词器 拼音分词器的问题 总结 DSL自动补全查询 RestAPI实现自动补全

Java # Java容器

一、概览 Collection Set TreeSet: 无序,不可重复,自动排序;存放在TreeSet中相当于存放到TreeMap的key部分HashSet: 无序,不可重复,支持快速查找;存放在HashSet中相当于存放到…

钉钉返回:访问ip不在白名单之中,请参考FAQ

新版钉钉 在开发管理-服务器出口IP-配置返回错误信息返回给你的requestIp

GNN的一篇入门 :A Gentle Introduction to Graph Neural Networks

原文链接 A Gentle Introduction to Graph Neural Networks (distill.pub)https://distill.pub/2021/gnn-intro/ 内容简介:本文是“A Gentle Introduction to Graph Neural Networks”的阅读笔记,因为第一次接触GNN,很多深奥的概念不懂&…

python多进程编程(模式与锁)

multiprocessing的三种模式 fork,【拷贝几乎所有资源】【支持文件对象/线程锁等传参】【unix】【任意位置开始】【快】spawn,【run参数传参必备资源】【不支持文件对象/线程锁等传参】【unix、win】【main代码块开始】【慢】forkserver,【ru…