使用 C# 操作 Excel 工作表:添加、删除、复制、移动、重命名
在日常开发中,我们经常需要对 Excel 文件进行各种操作,而不仅仅是写入或读取数据。比如在处理报表时,可能需要 添加新的工作表、删除不需要的表、复制或移动表格内容,甚至对工作表进行重命名和调整顺序。掌握这些操作能让你的 Excel 文件更加灵活,结构更清晰。
本文演示如何在 同一个工作簿内 完成多种工作表管理操作,包括添加、删除、复制、移动、重命名以及移动工作表。所有操作都基于同一个示例文件,便于截图展示效果。
本文使用免费的 Free Spire.XLS for .NET,可通过 NuGet 安装:
Install-Package FreeSpire.XLS
1. 初始化工作簿
新建的 Workbook
默认包含三个工作表(Sheet1、Sheet2、Sheet3)。我们从这里开始操作。
using Spire.Xls;
using System.Drawing;Workbook workbook = new Workbook();
Worksheet sheet1 = workbook.Worksheets[0];
sheet1.Name = "默认工作表1";
sheet1.Range["A1"].Text = "这是第一个默认工作表";
说明:
Workbook
类表示 Excel 文件。Worksheets
集合存放了该工作簿中的所有工作表。- 默认就有三个工作表,不需要手动添加。
2. 添加工作表
可以通过 Worksheets.Add()
方法添加新的工作表。
Worksheet newSheet = workbook.Worksheets.Add("新增工作表");
newSheet.Range["A1"].Text = "这是新建的工作表";
应用场景:
- 在现有报表中扩展新的数据区。
- 生成临时的计算表或结果表。
3. 删除工作表
如果不需要某个工作表,可以直接删除。这里我们删除第三个默认工作表(Sheet3)。
workbook.Worksheets[2].Remove(); // 删除第三个默认工作表
说明:删除后,工作簿中的工作表总数会减少,后续的索引也会自动调整。
4. 复制工作表
复制一个已有的工作表到新的位置。这里我们复制第一个工作表。
Worksheet copiedSheet = workbook.Worksheets.Add("复制的表");
copiedSheet.CopyFrom(sheet1);
copiedSheet.Range["A2"].Text = "这是复制自第一个工作表的副本";
场景:
- 保留原始表的同时,生成一个副本用于实验或修改。
- 避免重复手动设置表格格式。
5. 移动工作表
可以改变工作表在工作簿中的顺序。这里把“新增工作表”移动到第一个位置。
Worksheet sheetToMove = workbook.Worksheets["新增工作表"];
sheetToMove.MoveWorksheet(0); // 移动到第一个位置
说明:MoveWorksheet()
方法允许把指定的表移动到目标索引位置。索引从 0 开始。
6. 重命名工作表
工作表命名在报表管理中非常重要,合理命名有助于区分内容。这里我们把第二个工作表改名为“销售数据”。
workbook.Worksheets[2].Name = "销售数据";
workbook.Worksheets[2].Range["A1"].Text = "这里是销售数据表";
场景:将默认的 “Sheet1”、“Sheet2” 改为业务相关的名称,如“财务报表”、“年度统计”。
7. 复制内容到其他工作表
除了移动整个工作表,也可以将某些单元格区域复制或移动到其他表。这里我们将“销售数据”的 A2:C3 区域复制到“复制数据工作表”的 A2 开始的区域。
Worksheet source = workbook.Worksheets["销售数据"];
Worksheet target = workbook.Worksheets.Add("复制数据工作表");
target.Range["A1"].Text = "这是用于复制数据的工作表";// 在源表中填充一些示例数据
source.Range["A2"].Text = "产品";
source.Range["B2"].Text = "数量";
source.Range["C2"].Text = "金额";
source.Range["A3"].Text = "电脑";
source.Range["B3"].NumberValue = 10;
source.Range["C3"].NumberValue = 50000;
source.Range["A2:C3"].Style.Color = Color.LightGray;// 将源表的 A1:C2 区域复制到目标表的 A1
source.Range["A2:C3"].Copy(target.Range["A2"]);
说明:
- 使用
Copy()
可以将区域内容(包括数据与格式)复制到另一个表。 - 适合拆分数据或汇总数据时使用。
10. 将工作表复制到其他工作簿
有时我们需要将某个工作表从当前工作簿转移到另一个文件中,便于拆分数据或单独保存。下面演示如何把“销售数据”工作表复制到新的工作簿,并保存为单独文件。
// 获取要复制的工作表
Worksheet sheetToCopy = workbook.Worksheets["销售数据"];// 新建一个目标工作簿
Workbook newWorkbook = new Workbook();// 清空默认生成的工作表,避免混乱
newWorkbook.Worksheets.Clear();// 在新工作簿中添加并复制工作表
Worksheet newSheet1 = newWorkbook.Worksheets.Add("销售数据副本");
newSheet1.CopyFrom(sheetToCopy);// 删除原工作表即可完成移动
//sheetToCopy.Remove();
说明:
newWorkbook.Worksheets.Clear()
用于清空新建工作簿中默认的三个工作表。CopyFrom()
可以完整复制源表的数据和格式。- 删除原工作表即可完成移动操作工作表到新工作簿的操作。
8. 保存文件
最后,将工作簿保存为 Excel 文件以便查看结果。
workbook.SaveToFile("工作表操作示例.xlsx", ExcelVersion.Version2016);
newWorkbook.SaveToFile("复制到新工作簿示例.xlsx", ExcelVersion.Version2016);
生成的文件中包含:
- 已新增、复制和重命名的工作表;
- 删除了一个不需要的默认表;
- 调整了工作表顺序;
- 复制了部分单元格到其他工作表。
生成的 Excel 工作簿预览:
复制的新工作簿预览:
9. 关键方法总结
操作类型 | 方法/属性 | 说明 |
---|---|---|
添加表 | Worksheets.Add("name") | 新建一个工作表 |
删除表 | Worksheets[index].Remove() | 删除指定索引的工作表 |
复制表 | copiedSheet.CopyFrom(sourceSheet) | 将现有工作表复制到新表 |
移动表 | Worksheet.MoveWorksheet(positionIndex) | 调整工作表在工作簿中的顺序 |
重命名表 | Worksheet.Name | 设置或获取工作表的名称 |
移动单元格 | sourceRange.Copy(targetRange) | 将指定单元格区域复制到其他表 |
通过以上操作,你已经可以灵活地用 C# 操作 Excel 工作簿中的工作表。这些操作在日常文档管理和自动化处理中非常实用,能让 Excel 文件的组织更加清晰高效。
更多 Excel 文件操作技巧请查看 Spire.XLS for .NET 教程。