C# 中给 Excel 文件添加工作表

在 C# 中给 Excel 文件添加工作表,常用的方式有几种,主要取决于你使用的库。下面我给你介绍两种主流方法:

  1. 使用 Microsoft Interop Excel(需要安装 Office)​
  2. 使用 EPPlus(推荐,无需安装 Office,适用于 .xlsx)​

图片[1]_C# 中给 Excel 文件添加工作表_知途无界

方法一:使用 Microsoft Interop Excel(COM 组件方式)

适用于 Windows 且有安装 Excel 的环境,常用于桌面应用或传统 Office 自动化场景。

步骤

  1. 添加引用
    • 在项目中添加 COM 引用:Microsoft Excel xx.x Object Library
    • 或者通过 NuGet 安装 Microsoft.Office.Interop.Excel
  2. 代码示例
using Excel = Microsoft.Office.Interop.Excel;

class Program
{
    static void Main()
    {
        Application excelApp = new Application();
        excelApp.Visible = false; // 不显示界面

        Workbook workbook;
        string filePath = @"C:\example\test.xlsx";

        try
        {
            // 打开现有文件,若不存在则新建
            if (System.IO.File.Exists(filePath))
            {
                workbook = excelApp.Workbooks.Open(filePath);
            }
            else
            {
                workbook = excelApp.Workbooks.Add();
                workbook.SaveAs(filePath);
            }

            // 添加新工作表
            Worksheet newSheet = workbook.Sheets.Add(
                After: workbook.Sheets[workbook.Sheets.Count]);
            newSheet.Name = "NewSheet1";

            // 保存并关闭
            workbook.Save();
            workbook.Close();
            excelApp.Quit();

            Console.WriteLine("工作表添加成功");
        }
        catch (Exception ex)
        {
            Console.WriteLine("错误: " + ex.Message);
        }
        finally
        {
            // 释放 COM 对象
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
        }
    }
}

⚠️ 注意:Interop 性能较差且依赖 Office,不适合服务器环境或无界面的后台任务。


方法二:使用 EPPlus(推荐,纯 .NET 库,无需 Office)

适用于所有平台(Windows/Linux/macOS),只需要 .NET Framework/.NET Core/.NET 6+,处理 .xlsx 格式。

步骤

  1. 安装 EPPlus NuGet 包
Install-Package EPPlus

或者在 .csproj 中添加:

<PackageReference Include="EPPlus" Version="7.0.0" />
  1. 代码示例(添加工作表)​
using OfficeOpenXml;
using System.IO;

class Program
{
    static void Main()
    {
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 非商业用途

        string filePath = @"C:\example\test.xlsx";

        FileInfo fileInfo = new FileInfo(filePath);
        using (ExcelPackage package = fileInfo.Exists ? 
               new ExcelPackage(fileInfo) : new ExcelPackage())
        {
            ExcelWorkbook workbook = package.Workbook;

            // 如果文件不存在,添加一个默认工作表
            if (workbook.Worksheets.Count == 0)
            {
                workbook.Worksheets.Add("Sheet1");
            }

            // 添加新工作表
            ExcelWorksheet newSheet = workbook.Worksheets.Add("NewSheet1");

            // 可选:写入一些数据
            newSheet.Cells["A1"].Value = "Hello EPPlus";
            newSheet.Cells["A2"].Value = "This is a new sheet";

            // 保存到文件
            if (!fileInfo.Exists)
                package.SaveAs(fileInfo);

            Console.WriteLine("工作表添加成功");
        }
    }
}

✅ 优点:跨平台、性能好、不依赖 Office,适合服务端、Web API、后台任务等场景。


总结对比

特性Interop ExcelEPPlus
是否需要安装 Office
支持格式.xls/.xlsx.xlsx
运行环境Windows + Office跨平台 (.NET)
适用场景桌面自动化Web/服务/后台
性能

推荐​:如果是现代 .NET 项目(包括 ASP.NET Core、控制台、服务等),优先使用 ​EPPlus;只有在必须与现有 Excel COM 功能深度交互时才考虑 Interop。


如果你告诉我你的项目类型(比如是否是 Web 项目、是否安装 Office),我可以帮你定制更合适的代码。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞44 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容