脚本专家 发表于 2026-6-28 09:00:02

Python操作Excel工作表:Spire.XLS实现创建、复制、隐藏、移动与删除

在Excel文件自动化处理中,工作表(Worksheet)是最基本的数据组织单元。通过Python脚本动态管理工作表——添加、复制、隐藏、移动、删除等——可以大幅提升数据整理和报表生成的效率。本文使用Spire.XLS for Python库(通过pip install Spire.XLS安装),演示如何用代码完成这些常见操作。

一、环境准备

安装Spire.XLS库后,通过spire.xls模块导入相关类。示例中所有代码均基于该库,操作流程为:创建Workbook对象 → 加载或新建文件 → 操作Worksheets集合 → 保存并释放资源。

二、添加工作表

使用Workbook的Worksheets.Add(name)方法添加新工作表,返回新工作表对象,可立即写入数据。默认新表添加在末尾。


from spire.xls import *

workbook = Workbook()
sheet = workbook.Worksheets.Add("DataSheet")
sheet.Range["A1"].Text = "这是新添加的工作表"
workbook.SaveToFile("AddWorksheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()


三、复制工作表

复制分为同一工作簿内复制和跨工作簿复制两种场景。

1. 同一工作簿内复制

通过CopyFrom方法将源工作表的数据和格式复制到新创建的目标工作表中。最后一个布尔参数控制是否复制格式(设为True)。


workbook = Workbook()
workbook.LoadFromFile("Template.xlsx")
sourceSheet = workbook.Worksheets
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()


2. 跨工作簿复制

先加载源文件和目标文件,在目标文件内添加新工作表,然后直接CopyFrom源工作表对象即可。适用于数据汇总场景。


sourceWorkbook = Workbook()
sourceWorkbook.LoadFromFile("Source.xlsx")
srcSheet = sourceWorkbook.Worksheets

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属性控制可见性。使用WorksheetVisibility枚举中的Hidden或Visible。隐藏后数据保留,仅在Excel界面不可见。


workbook = Workbook()
workbook.LoadFromFile("MultiSheet.xlsx")
workbook.Worksheets["CalcSheet"].Visibility = WorksheetVisibility.Hidden
workbook.Worksheets["Report"].Visibility = WorksheetVisibility.Visible
workbook.SaveToFile("HideShowSheet.xlsx", ExcelVersion.Version2013)
workbook.Dispose()


五、移动工作表

使用工作表的MoveWorksheet(index)方法调整其在标签栏中的顺序。参数为目标位置索引(从0开始)。


sheet = workbook.Worksheets
sheet.MoveWorksheet(2)


六、删除工作表

通过索引或名称从集合中移除工作表,操作不可逆。建议先获取所有工作表名称确认后再删除。


workbook.Worksheets.RemoveAt(1)
# 或 workbook.Worksheets.Remove("TempSheet")


七、设置工作表标签颜色

为工作表TabColor属性赋值Color对象,预定义颜色如Red、Green、LightBlue,也可使用RGB值。


workbook.Worksheets.TabColor = Color.get_Red()
workbook.Worksheets.TabColor = Color.get_Green()


八、冻结窗格

FreezePanes(row, column)方法冻结指定单元格上方和左侧的区域。例如FreezePanes(2,1)冻结首行。


sheet.FreezePanes(2, 1)


九、获取所有工作表名称

遍历Worksheets集合,读取Name属性。常用于动态生成列表或数据校验。


for sheet in workbook.Worksheets:
    print(sheet.Name)


总结:Spire.XLS for Python提供了完整的工作表管理API,覆盖日常自动化中的大部分场景。开发者可根据需求组合使用上述操作,构建灵活的数据处理流程。

热心网友1 发表于 2026-6-28 09:10:00

Re: Python操作Excel工作表:Spire.XLS实现创建、复制、隐藏、移动与删除

感谢分享!Spire.XLS 这个库我之前在 .NET 里用过,没想到 Python 版也把工作表操作封装得这么完整。特别是跨工作簿复制那一段,对数据合并场景很实用。有个小问题想请教:用 `MoveWorksheet` 调整顺序时,如果目标索引超出了当前工作表总数,会报错还是自动追加到末尾?有时候批量操作时担心索引越界。另外,隐藏工作表后通过 `SaveToFile` 保存,再打开 Excel 文件,工作表确实不显示对吧?之前试过别的库隐藏后重新打开又自动显示了,有点困惑。期待你的经验分享。

热心网友1 发表于 2026-6-28 09:10:00

Re: Python操作Excel工作表:Spire.XLS实现创建、复制、隐藏、移动与删除

感谢分享这么详细的Spire.XLS工作表操作教程!正好最近在处理多个Excel报表合并的工作,复制和移动工作表的功能很实用。请问在跨工作簿复制时,如果源文件有多个工作表,是只能一个个复制吗?库有没有一次性复制全部工作表的方法?

热心网友1 发表于 2026-6-28 09:10:00

Re: Python操作Excel工作表:Spire.XLS实现创建、复制、隐藏、移动与删除

感谢分享,非常实用的教程!Spire.XLS 的 API 设计得很直观,尤其 `CopyFrom` 和 `Visibility` 这些方法直接对应 Excel 原生操作,比直接用 openpyxl 处理格式和跨工作簿复制要省事不少。想问一下,你在实际使用中遇到过 `.xls` 格式(老版 Excel)的兼容问题吗?因为教程里保存用的是 `Version2013`,如果输入文件是旧格式,加载和保存时需不需要额外处理?
页: [1]
查看完整版本: Python操作Excel工作表:Spire.XLS实现创建、复制、隐藏、移动与删除