通过 C# 复制 Excel 工作表

在日常的 .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环境,代码简洁、稳定可靠。

相关推荐
Vae_Mars8 小时前
C#中的delegate委托
开发语言·c#
qq_5486124512 小时前
.NET 平台报表工具汇总(.NET Framework /.NET6-8,中国式复杂报表、Web 嵌入、填报、导出打印)
前端·.net
公子小六12 小时前
基于.NET的Windows窗体编程之WinForms音频控件
windows·microsoft·c#·.net·音视频·winforms
绿浪198413 小时前
c# 结构体 能不能直接封送检测
开发语言·c#
新手unity自用笔记13 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
界面开发小八哥14 小时前
界面控件DevExpress Blazor v26.1新版亮点 - Navigation(导航)
javascript·.net·界面控件·blazor·devexpress·ui开发
格林威14 小时前
C#图像像素放大:邻域平均、双线性插值实现像素放大的C#实现代码
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
用户2986985301419 小时前
C# 实现 PowerPoint 多格式转换:图片、PDF 与 SVG 实战
c#·.net·svg
李高钢20 小时前
【WPF】从 Avalon 到 .NET 10:WPF 平台演进史与特性全览
.net·wpf
格林威21 小时前
C#图像处理:使用imagemagick实现像素放大水印转换等多种功能
android·开发语言·图像处理·人工智能·计算机视觉·c#·视觉检测