在 C# 中给 Excel 文件添加工作表,常用的方式有几种,主要取决于你使用的库。下面我给你介绍两种主流方法:
- 使用 Microsoft Interop Excel(需要安装 Office)
- 使用 EPPlus(推荐,无需安装 Office,适用于 .xlsx)
![图片[1]_C# 中给 Excel 文件添加工作表_知途无界](https://zhituwujie.com/wp-content/uploads/2025/11/d2b5ca33bd20251127090901.png)
方法一:使用 Microsoft Interop Excel(COM 组件方式)
适用于 Windows 且有安装 Excel 的环境,常用于桌面应用或传统 Office 自动化场景。
步骤
- 添加引用
- 在项目中添加 COM 引用:
Microsoft Excel xx.x Object Library - 或者通过 NuGet 安装
Microsoft.Office.Interop.Excel
- 在项目中添加 COM 引用:
- 代码示例
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格式。
步骤
- 安装 EPPlus NuGet 包
Install-Package EPPlus
或者在 .csproj 中添加:
<PackageReference Include="EPPlus" Version="7.0.0" />
- 代码示例(添加工作表)
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 Excel | EPPlus |
|---|---|---|
| 是否需要安装 Office | 是 | 否 |
| 支持格式 | .xls/.xlsx | .xlsx |
| 运行环境 | Windows + Office | 跨平台 (.NET) |
| 适用场景 | 桌面自动化 | Web/服务/后台 |
| 性能 | 慢 | 快 |
推荐:如果是现代 .NET 项目(包括 ASP.NET Core、控制台、服务等),优先使用 EPPlus;只有在必须与现有 Excel COM 功能深度交互时才考虑 Interop。
如果你告诉我你的项目类型(比如是否是 Web 项目、是否安装 Office),我可以帮你定制更合适的代码。
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容