Python实现复制和移动Excel工作表并保留所有格式

 更新时间:2025年11月07日 14:30:45   作者:SunnyDays1011  
在使用 Python 操作 Excel 文件时,可能会遇到需要在同一个工作簿内或不同工作簿之间复制或移动工作表的情况,本文将介绍如何使用 Python 复制和移动 Excel 工作表,希望对大家有所帮助

在使用 Python 操作 Excel 文件时,可能会遇到需要在同一个工作簿内或不同工作簿之间复制或移动工作表的情况。这些操作通常用于数据汇总、数据重组或创建备份等任务。

本文将介绍如何使用 Python 复制和移动 Excel 工作表。

为什么需要复制和移动 Excel 工作表

复制和移动工作表是 Excel 中常见的操作,以下是几个常见的应用场景:

  • 数据汇总:将多个工作表或工作簿中的数据合并到一个文件中,方便分析和报告。
  • 重组工作表顺序:重新排列或分组工作表,以创建更具结构性和组织性的工作簿。
  • 备份和版本管理:在编辑前快速复制工作表,保留原始数据,便于恢复或审计。
  • 模板复制:复制标准模板或报告布局,以便快速生成新的报告。

准备工作

在编写代码之前,确保你的 Python 环境已经配置好:

安装Python:安装 Python 3.7 或更高版本。

安装用于操作 Excel 文件的 Python 库:本文使用 Spire.XLS for Python,这是一个功能全面的库,支持读取、写入、处理和转换 Excel 文件。如果尚未安装,可

以通过以下 pip 命令安装:

pip install spire-xls

使用 Python 复制 Excel 工作表

复制工作表指的是将工作表中的所有内容和格式复制到另一个工作表。这一操作既可以在同一个工作簿内进行,也可以跨不同的工作簿进行。

Spire.XLS 提供了 AddCopy() 方法,简化了复制过程,并确保操作的稳定性和可靠性。

在同一个工作簿内复制工作表

以下是如何在同一个工作簿内复制工作表的步骤:

  • 使用 Workbook.LoadFromFile() 加载工作簿。
  • 使用 Workbook.Worksheets[index] 选择要复制的工作表。
  • 使用 Workbook.Worksheets.AddCopy() 将工作表复制到同一工作簿。
  • 使用 Workbook.SaveToFile() 保存结果工作簿。

代码示例:

from spire.xls import *
 
# 加载源工作簿
workbook = Workbook()
workbook.LoadFromFile('source_file.xlsx')
 
# 选择要复制的工作表(例如,第一张工作表)
worksheet_to_copy = workbook.Worksheets[0]
 
# 在同一个工作簿内复制工作表
workbook.Worksheets.AddCopy(worksheet_to_copy)
 
# 保存更新后的工作簿
workbook.SaveToFile('destination_file.xlsx')
workbook.Dispose()

在不同工作簿之间复制工作表

当需要将多个报告合并到一个主文件时,你可能需要将一个工作表从一个工作簿复制到另一个工作簿。

在跨工作簿复制时,你可以选择使用 CopyTheme() 方法来保留源工作簿的主题,包括字体、颜色和样式,从而确保目标工作簿的外观与源工作簿一致。

from spire.xls import *
 
# 加载源工作簿
source_workbook = Workbook()
source_workbook.LoadFromFile('source_file.xlsx')
 
# 选择要复制的工作表
worksheet_to_copy = source_workbook.Worksheets[0]
 
# 加载目标工作簿
destination_workbook = Workbook()
destination_workbook.LoadFromFile('destination_file.xlsx')
 
# 将工作表复制到目标工作簿
destination_workbook.Worksheets.AddCopy(worksheet_to_copy)
 
# 可选:复制主题,以确保格式一致
destination_workbook.CopyTheme(source_workbook)
 
# 保存目标工作簿
destination_workbook.SaveToFile('destination_file_with_copied_sheet.xlsx')
 
# 释放资源
source_workbook.Dispose()
destination_workbook.Dispose()

使用 Python 移动 Excel 工作表

与复制不同,移动工作表是将工作表本身从一个位置转移到另一个位置,原始工作表不会保留副本。这通常用于调整工作表顺序,或者在不同工作簿之间转移工作表。

在同一工作簿内移动工作表

通过 Move() 方法,你可以重新排列工作表的位置,调整工作簿的结构和顺序。操作步骤如下:

  • 加载工作簿。
  • 使用 Workbook.Worksheets.Move() 方法调整指定工作表的位置。
  • 保存更新后的工作簿。

代码示例:

from spire.xls import *
 
# 加载工作簿
workbook = Workbook()
workbook.LoadFromFile('source_file.xlsx')
 
# 将第一张工作表移动到第二个位置
workbook.Worksheets.Move(0, 1)
 
# 保存更新后的工作簿
workbook.SaveToFile('destination_file.xlsx')
workbook.Dispose()

执行后,工作簿中的工作表顺序会被调整,且原有的数据和格式都会得到保留。

在不同工作簿之间移动工作表

如果需要将工作表从一个工作簿移动到另一个工作簿,可以按以下步骤操作:

  • 将工作表从源工作簿复制到目标工作簿。
  • 从源工作簿中删除原始工作表。

代码示例:

from spire.xls import *
 
# 加载源和目标工作簿
source = Workbook()
source.LoadFromFile('source_file.xlsx')
 
destination = Workbook()
destination.LoadFromFile('destination_file.xlsx')
 
# 选择要移动的工作表
sheet_to_move = source.Worksheets[0]
 
# 将工作表复制到目标工作簿
destination.Worksheets.AddCopy(sheet_to_move)
 
# 从源工作簿中删除原始工作表
source.Worksheets.Remove(sheet_to_move)
 
# 保存更改
destination.SaveToFile('destination_with_moved_sheet.xlsx')
source.SaveToFile('source_after_move.xlsx')
 
source.Dispose()
destination.Dispose()

通过这种方式,工作表会从源工作簿转移到目标工作簿中,并且不会留下副本。

复制和移动 Excel 工作表的注意事项

在使用 Python 自动化处理 Excel 工作表时,以下几个注意事项可以帮助确保操作顺利进行,同时避免潜在的问题:

1.理解 AddCopy() 方法的工作原理

使用 AddCopy() 复制工作表时,Spire.XLS 会自动为新复制的工作表命名,通常是原工作表名称加上一个数字后缀(如“Sheet1_1”)。如果需要自定义名称,可以复制后再修改工作表名称。

# 加载工作簿
workbook = Workbook()
workbook.LoadFromFile('source_file.xlsx')  
 
# 获取第一个工作表
worksheet = workbook.Worksheets[0]  
 
# 复制工作表
workbook.Worksheets.AddCopy(worksheet)  
 
# 获取工作表总数
sheet_count = workbook.Worksheets.Count  
 
# 获取最后一个工作表(复制的工作表会被添加到工作表集合的末尾)
copied_sheet = workbook.Worksheets[sheet_count-1]  
# 重命名复制的工作表
copied_sheet.Name = 'Sales_Report_Backup'  
 
# 保存工作簿
workbook.SaveToFile('output.xlsx')  
workbook.Dispose()  # 释放资源

2.确保格式和主题一致性

在跨工作簿复制工作表时,使用 CopyTheme() 方法可以保持工作表的外观一致,包括字体、颜色和表格样式。

3.及时释放资源

在保存并关闭工作簿后,记得调用 Dispose() 方法释放资源。这可以避免文件被锁定或内存泄漏,尤其是当你在处理多个工作簿时。

4.增加错误处理

使用 try-except 语句捕获可能的错误,确保脚本在文件丢失、索引越界等情况下能正常运行。

try:
    workbook.LoadFromFile("source.xlsx")  # 尝试加载文件
except FileNotFoundError:
    print("错误:无法找到源文件。")  # 如果文件未找到,打印错误信息

5.优化性能

对于包含大量数据的工作簿,尽量避免不必要的操作,专注于复制或移动需要的工作表。

到此这篇关于Python实现复制和移动Excel工作表并保留所有格式的文章就介绍到这了,更多相关Python复制和移动Excel工作表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何在Win10系统使用Python3连接Hive

    如何在Win10系统使用Python3连接Hive

    这篇文章主要介绍了如何在Win10系统使用Python3连接Hive,帮助大家更好的利用python读取数据,进行探索、分析和挖掘工作。感兴趣的朋友可以了解下
    2020-10-10
  • PyTorch中Tensor的维度变换实现

    PyTorch中Tensor的维度变换实现

    这篇文章主要介绍了PyTorch中Tensor的维度变换实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python计算列表元素与乘积详情

    python计算列表元素与乘积详情

    这篇文章主要介绍了python计算列表元素与乘积,文章围绕主题展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python产生模拟数据faker库的使用详解

    python产生模拟数据faker库的使用详解

    这篇文章主要介绍了python产生模拟数据faker库的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 用pywin32实现windows模拟鼠标及键盘动作

    用pywin32实现windows模拟鼠标及键盘动作

    这篇文章主要介绍了用pywin32实现windows模拟鼠标及键盘动作的示例,需要的朋友可以参考下
    2014-04-04
  • Jupyter Notebook打开任意文件夹操作

    Jupyter Notebook打开任意文件夹操作

    这篇文章主要介绍了Jupyter Notebook打开任意文件夹操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 一篇文章彻底搞懂Python切片操作

    一篇文章彻底搞懂Python切片操作

    利用python解决问题的过程中,经常会遇到从某个对象中抽取部分值的情况,"切片"操作正是专门用于实现这一目标的有力武器,下面这篇文章主要给大家介绍了关于Python切片操作的相关资料,需要的朋友可以参考下
    2022-06-06
  • pytorch通过自己的数据集训练Unet网络架构

    pytorch通过自己的数据集训练Unet网络架构

    Unet是一个最近比较火的网络结构。它的理论已经有很多大佬在讨论了。本文主要从实际操作的层面,讲解如何使用pytorch实现unet图像分割
    2022-12-12
  • Python实现自动化处理Word文档的方法详解

    Python实现自动化处理Word文档的方法详解

    本文主要介绍了如何使用Python实现Word文档的自动化处理,包括批量生成Word文档、在Word文档中批量进行查找和替换、将Word文档批量转换成PDF等,希望对你有所帮助
    2022-08-08
  • Python中最强大的重试库Tenacity使用探索

    Python中最强大的重试库Tenacity使用探索

    这篇文章主要为大家介绍了Python中最强大的重试库Tenacity使用探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论