使用 C# 操作 Excel 工作表:添加、删除、复制、移动、重命名

在日常开发中,我们经常需要对 Excel 文件进行各种操作,而不仅仅是写入或读取数据。比如在处理报表时,可能需要 添加新的工作表、删除不需要的表、复制或移动表格内容,甚至对工作表进行重命名和调整顺序。掌握这些操作能让你的 Excel 文件更加灵活,结构更清晰。

本文演示如何在 同一个工作簿内 完成多种工作表管理操作,包括添加、删除、复制、移动、重命名以及移动工作表。所有操作都基于同一个示例文件,便于截图展示效果。

本文使用免费的 Free Spire.XLS for .NET,可通过 NuGet 安装:

powershell 复制代码
Install-Package FreeSpire.XLS

1. 初始化工作簿

新建的 Workbook 默认包含三个工作表(Sheet1、Sheet2、Sheet3)。我们从这里开始操作。

csharp 复制代码
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() 方法添加新的工作表。

csharp 复制代码
Worksheet newSheet = workbook.Worksheets.Add("新增工作表");
newSheet.Range["A1"].Text = "这是新建的工作表";

应用场景

  • 在现有报表中扩展新的数据区。
  • 生成临时的计算表或结果表。

3. 删除工作表

如果不需要某个工作表,可以直接删除。这里我们删除第三个默认工作表(Sheet3)。

csharp 复制代码
workbook.Worksheets[2].Remove();  // 删除第三个默认工作表

说明:删除后,工作簿中的工作表总数会减少,后续的索引也会自动调整。


4. 复制工作表

复制一个已有的工作表到新的位置。这里我们复制第一个工作表。

csharp 复制代码
Worksheet copiedSheet = workbook.Worksheets.Add("复制的表");
copiedSheet.CopyFrom(sheet1);
copiedSheet.Range["A2"].Text = "这是复制自第一个工作表的副本";

场景

  • 保留原始表的同时,生成一个副本用于实验或修改。
  • 避免重复手动设置表格格式。

5. 移动工作表

可以改变工作表在工作簿中的顺序。这里把"新增工作表"移动到第一个位置。

csharp 复制代码
Worksheet sheetToMove = workbook.Worksheets["新增工作表"];
sheetToMove.MoveWorksheet(0);  // 移动到第一个位置

说明MoveWorksheet() 方法允许把指定的表移动到目标索引位置。索引从 0 开始。


6. 重命名工作表

工作表命名在报表管理中非常重要,合理命名有助于区分内容。这里我们把第二个工作表改名为"销售数据"。

csharp 复制代码
workbook.Worksheets[2].Name = "销售数据";
workbook.Worksheets[2].Range["A1"].Text = "这里是销售数据表";

场景:将默认的 "Sheet1"、"Sheet2" 改为业务相关的名称,如"财务报表"、"年度统计"。


7. 复制内容到其他工作表

除了移动整个工作表,也可以将某些单元格区域复制或移动到其他表。这里我们将"销售数据"的 A2:C3 区域复制到"复制数据工作表"的 A2 开始的区域。

csharp 复制代码
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. 将工作表复制到其他工作簿

有时我们需要将某个工作表从当前工作簿转移到另一个文件中,便于拆分数据或单独保存。下面演示如何把"销售数据"工作表复制到新的工作簿,并保存为单独文件。

csharp 复制代码
// 获取要复制的工作表
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 文件以便查看结果。

csharp 复制代码
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 教程

相关推荐
yaoxtao3 小时前
ubuntu22.04配置ip
linux·运维·服务器
娶不到胡一菲的汪大东3 小时前
C#第五讲 函数的用法
开发语言·c#
MetaverseMan3 小时前
golang和rust内存分配策略
开发语言·golang·rust
再睡亿分钟!3 小时前
思考:客户端负载均衡和服务器负载均衡有什么区别?
java·开发语言·微服务·负载均衡
小猪写代码3 小时前
bash zsh sh与shell 有什么关系
开发语言·bash
磨十三3 小时前
C++ 中的 static 关键字:类成员、局部变量与单例模式
开发语言·c++·单例模式
know__ledge3 小时前
Pytest+requests进行接口自动化测试5.0(5种assert断言的封装 + pymysql)
服务器·开发语言·python·测试用例·pytest
golang学习记3 小时前
从0死磕全栈第十天:nest.js集成prisma完成CRUD
开发语言·javascript·jvm
Familyism3 小时前
Java虚拟机——JVM
java·开发语言·jvm