在日常的 .NET 开发中,我们经常需要操作 Excel 文件,例如读取、写入、修改或复制工作表。Free Spire.XLS for .NET 是一个功能强大且免费的类库,支持多种 Excel 操作,包括工作表复制。本文将详细介绍如何使用它在同一工作簿内或不同工作簿之间复制工作表。
1. 环境准备
通过 NuGet 安装 Free Spire.XLS
Install-Package FreeSpire.XLS
✅ 注意: 免费版本有一定的页面限制,仅适合个人或小型项目。
2. 核心功能
Free Spire.XLS 提供了 Worksheet.CopyFrom()
方法,可以方便地复制工作表:
- 在同一工作簿内复制
- 在不同工作簿之间复制
3. 示例代码
3.1 在同一工作簿内复制工作表
csharp
using Spire.Xls;
namespace CopyExcelworksheet
{
class Program
{
static void Main(string[] args)
{
// 加载 Excel 文档
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 在同一文档内添加新工作表
workbook.Worksheets.Add("Sheet1_Copy");
// 将指定工作表复制到新工作表
workbook.Worksheets[1].CopyFrom(workbook.Worksheets[0]);
// 保存结果
workbook.SaveToFile("复制工作表.xlsx", ExcelVersion.Version2016);
}
}
}
✅ 优势:无需文件重命名,保留格式与数据。
3.2 在不同工作簿之间复制工作表
csharp
using Spire.Xls;
namespace CopyExcelworksheet
{
class Program
{
static void Main(string[] args)
{
// 加载第一个 Excel 文档
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 获取其中第一张工作表
Worksheet sheet = workbook.Worksheets[0];
// 加载第二个 Excel 文档
Workbook workbook2 = new Workbook();
workbook2.LoadFromFile("New.xlsx");
// 在其中添加新工作表
Worksheet targetWorksheet = workbook2.Worksheets.Add("模板");
// 将第一个Excel中第一个工作表复制到第二个Excel新工作表中
targetWorksheet.CopyFrom(sheet);
// 保存文档
workbook2.SaveToFile("在不同文件间复制.xlsx", FileFormat.Version2013);
}
}
}
💡 适用于:从A表模板复制到B表,实现快速生成。
批量示例:批量复制多个工作表
csharp
string[] sheetNames = { "Sheet1", "Sheet2", "Sheet3" };
foreach (string name in sheetNames)
{
Sheet srcSheet = workbook.Worksheets[name];
Sheet newSheet = workbook.Worksheets.Add($"Copy_{name}");
newSheet.CopyFrom(srcSheet);
}
🚀 提升效率:一键完成多表复制,减少重复代码。
4. 最佳实践建议
- 保留格式与样式 :
CopyFrom()
方法自动保留字体、边框、颜色等。 - 避免内存泄漏 :操作完成后及时调用
workbook.Close()
或释放资源。 - 错误处理 :建议加入
try-catch
包裹关键操作。
在自动化办公日益普及的今天,复制工作表不仅是基础操作,更是提升开发效率的核心能力。通过使用免费 .NET Excel库,开发者可在C#中轻松实现跨文件、跨工作表的高效复制,无需依赖Office环境,代码简洁、稳定可靠。