
在 Excel 文件处理过程中,工作表(Worksheet)是组织和分隔数据的基本单元。一个 Excel 文件通常包含多个工作表,用于分别存储不同类型的数据或展示不同维度的分析结果。在自动化场景中,经常需要通过代码动态地添加、复制、隐藏、移动和删除工作表。本文将介绍如何使用 Python 实现对 Excel 工作表的全面管理。
本文使用 Spire.XLS for Python 来操作 Excel 文件。该库提供了对工作表集合的完整操作接口,覆盖日常自动化中常见的工作表管理需求。
复制代码pip install Spire.XLS
安装完成后,通过 spire.xls 模块即可访问相关 API。
添加工作表是最基础的操作。通过 Workbook 对象访问 Worksheets 集合,调用 Add() 方法并指定工作表名称即可创建新的工作表。
复制代码from spire.xls import *# 创建工作簿对象
workbook = Workbook()# 添加一个名为 "DataSheet" 的新工作表
sheet = workbook.Worksheets.Add("DataSheet")# 在新工作表中写入数据
sheet.Range["A1"].Text = "这是新添加的工作表"# 保存文件
workbook.SaveToFile("AddWorksheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Add() 方法返回新创建的工作表对象,可以直接对其进行数据写入和格式设置。新工作表默认被添加到所有现有工作表的末尾。
复制工作表分为两种场景:在同一工作簿内复制,以及跨工作簿复制。
在同一工作簿中复制工作表时,需要先将源工作表的数据范围取出,再复制到目标工作表:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("Template.xlsx")# 获取源工作表
sourceSheet = workbook.Worksheets[0]# 创建目标工作表
targetSheet = workbook.Worksheets.Add("CopyOfSource")# 复制数据
sourceRange = sourceSheet.AllocatedRange
targetSheet.CopyFrom(sourceRange, targetSheet, targetSheet.FirstRow, targetSheet.FirstColumn, True)workbook.SaveToFile("CopyWithinWorkbook.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
CopyFrom() 方法的最后一个参数控制是否同时复制格式。设为 True 时,数据、样式、合并单元格等信息都会被完整复制。
跨工作簿复制允许将一个 Excel 文件中的工作表内容复制到另一个文件中:
复制代码from spire.xls import *# 加载源文件
sourceWorkbook = Workbook()
sourceWorkbook.LoadFromFile("Source.xlsx")
srcSheet = sourceWorkbook.Worksheets[0]# 加载目标文件
targetWorkbook = Workbook()
targetWorkbook.LoadFromFile("Target.xlsx")# 在目标文件中添加新工作表并复制内容
targetSheet = targetWorkbook.Worksheets.Add("ImportedSheet")
targetSheet.CopyFrom(srcSheet)targetWorkbook.SaveToFile("CopyAcrossWorkbooks.xlsx", ExcelVersion.Version2013)
targetWorkbook.Dispose()
sourceWorkbook.Dispose()
这种方式在数据汇总场景中非常实用,例如将多个部门的数据表合并到一个汇总文件中。
在某些情况下,需要隐藏包含辅助数据或中间计算结果的工作表,使文件使用者只看到关键信息。通过设置工作表的 Visibility 属性可以控制其可见性:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")# 隐藏指定工作表
workbook.Worksheets["CalcSheet"].Visibility = WorksheetVisibility.Hidden# 显示被隐藏的工作表
workbook.Worksheets["Report"].Visibility = WorksheetVisibility.Visibleworkbook.SaveToFile("HideShowSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
WorksheetVisibility 枚举提供 Hidden 和 Visible 两个值。隐藏工作表并不会删除其内容,数据仍然保留,只是在 Excel 界面中不可见。
当工作表的排列顺序需要调整时,可以使用 MoveWorksheet() 方法将其移动到指定位置:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets[0]# 将其移动到第 3 个位置(索引从 0 开始)
sheet.MoveWorksheet(2)workbook.SaveToFile("MoveSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
MoveWorksheet() 接收一个整数参数,表示目标位置的索引。移动操作不会改变工作表的内容和数据,只调整其在标签栏中的排列顺序。
当工作表不再需要时,可以通过索引或名称将其从工作簿中移除:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")# 通过索引删除工作表
workbook.Worksheets.RemoveAt(1)# 也可以通过名称删除
# workbook.Worksheets.Remove("TempSheet")workbook.SaveToFile("RemoveSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
删除操作是不可逆的,执行后工作表及其所有数据将被永久移除。在批量删除前,建议先通过遍历获取所有工作表名称进行确认。
为不同工作表的标签设置颜色,可以在视觉上快速区分各类数据表,提升文件的可读性:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")# 为不同工作表设置标签颜色
workbook.Worksheets[0].TabColor = Color.get_Red()
workbook.Worksheets[1].TabColor = Color.get_Green()
workbook.Worksheets[2].TabColor = Color.get_LightBlue()workbook.SaveToFile("TabColor.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
TabColor 属性接受 Color 对象,可以使用预定义颜色(如 Red、Green、LightBlue)或自定义 RGB 值。
冻结窗格可以在滚动时保持标题行或列始终可见,是处理大型数据表时的常用设置:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("DataSheet.xlsx")sheet = workbook.Worksheets[0]# 冻结首行(第 2 行第 1 列以上的区域被冻结)
sheet.FreezePanes(2, 1)workbook.SaveToFile("FreezePanes.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
FreezePanes() 方法接收两个参数:行号和列号。指定位置上方和左侧的区域将被冻结。例如 FreezePanes(2, 1) 冻结第 1 行,FreezePanes(1, 2) 冻结第 1 列,FreezePanes(3, 2) 则同时冻结前 2 行和前 1 列。
在自动化流程中,经常需要先获取文件中所有工作表的名称,以便进行后续操作:
复制代码from spire.xls import *workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")# 遍历并获取所有工作表名称
for sheet in workbook.Worksheets:
print(sheet.Name)workbook.Dispose()
这个操作常用于动态生成工作表列表、按名称查找特定工作表,或在批量处理前进行数据校验。
本文介绍了使用 Python 管理 Excel 工作表的核心操作,包括添加、复制、隐藏、移动、删除工作表,以及设置标签颜色和冻结窗格。这些操作覆盖了日常 Excel 自动化中最常见的工作表管理需求。
关键要点回顾:
Worksheets.Add() 添加新工作表CopyFrom() 实现工作表内容的复制,支持同工作簿和跨工作簿场景Visibility 属性控制工作表的显示与隐藏MoveWorksheet() 调整工作表排列顺序FreezePanes() 设置冻结窗格,提升大数据表的可读性在此基础上,可以进一步结合数据写入、格式设置和文件转换等功能,构建完整的 Excel 自动化处理流程。