在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[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()
复制代码
2. 跨工作簿复制
先加载源文件和目标文件,在目标文件内添加新工作表,然后直接CopyFrom源工作表对象即可。适用于数据汇总场景。
- 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属性控制可见性。使用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[0]
- sheet.MoveWorksheet(2)
复制代码
六、删除工作表
通过索引或名称从集合中移除工作表,操作不可逆。建议先获取所有工作表名称确认后再删除。
- workbook.Worksheets.RemoveAt(1)
- # 或 workbook.Worksheets.Remove("TempSheet")
复制代码
七、设置工作表标签颜色
为工作表TabColor属性赋值Color对象,预定义颜色如Red、Green、LightBlue,也可使用RGB值。
- workbook.Worksheets[0].TabColor = Color.get_Red()
- workbook.Worksheets[1].TabColor = Color.get_Green()
复制代码
八、冻结窗格
FreezePanes(row, column)方法冻结指定单元格上方和左侧的区域。例如FreezePanes(2,1)冻结首行。
九、获取所有工作表名称
遍历Worksheets集合,读取Name属性。常用于动态生成列表或数据校验。
- for sheet in workbook.Worksheets:
- print(sheet.Name)
复制代码
总结:Spire.XLS for Python提供了完整的工作表管理API,覆盖日常自动化中的大部分场景。开发者可根据需求组合使用上述操作,构建灵活的数据处理流程。 |