我们创建一个更通用的 ExcelHelper
类,以便在 C# 中更方便地生成和操作 Excel 文件。这个类将封装常用的 Excel 操作,如创建工作簿、添加工作表、设置单元格值、自动调整列宽等。
步骤
-
安装 EPPlus 库 首先,确保你已经安装了
EPPlus
库。你可以通过 NuGet 包管理器安装它:bash
Install-Package EPPlus
-
创建 ExcelHelper 类 我们将创建一个
ExcelHelper
类,封装常用的 Excel 操作。
ExcelHelper 类
csharp
using OfficeOpenXml;
using System.IO;
public class ExcelHelper : IDisposable
{
private ExcelPackage _package;
public ExcelHelper()
{
_package = new ExcelPackage();
}
/// <summary>
/// 添加一个新的工作表
/// </summary>
/// <param name="sheetName">工作表名称</param>
/// <returns>ExcelWorksheet 对象</returns>
public ExcelWorksheet AddWorksheet(string sheetName)
{
if (_package.Workbook.Worksheets[sheetName] != null)
{
throw new ArgumentException($"工作表 '{sheetName}' 已经存在。");
}
return _package.Workbook.Worksheets.Add(sheetName);
}
/// <summary>
/// 设置单元格的值
/// </summary>
/// <param name="worksheet">工作表对象</param>
/// <param name="address">单元格地址(例如 "A1")</param>
/// <param name="value">单元格的值</param>
public void SetCellValue(ExcelWorksheet worksheet, string address, object value)
{
worksheet.Cells[address].Value = value;
}
/// <summary>
/// 自动调整列宽
/// </summary>
/// <param name="worksheet">工作表对象</param>
public void AutoFitColumns(ExcelWorksheet worksheet)
{
int columnCount = worksheet.Dimension.End.Column;
for (int col = 1; col <= columnCount; col++)
{
worksheet.Column(col).AutoFit();
}
}
/// <summary>
/// 保存 Excel 文件到指定路径
/// </summary>
/// <param name="filePath">文件路径</param>
public void Save(string filePath)
{
FileInfo fileInfo = new FileInfo(filePath);
_package.SaveAs(fileInfo);
}
/// <summary>
/// 释放资源
/// </summary>
public void Dispose()
{
_package?.Dispose();
}
}
使用 ExcelHelper 类
下面是如何使用 ExcelHelper
类来创建并保存一个包含数据的 Excel 文件的示例:
csharp
using System;
class Program
{
static void Main(string[] args)
{
// 创建 ExcelHelper 实例
using (ExcelHelper excelHelper = new ExcelHelper())
{
// 添加一个新的工作表
ExcelWorksheet worksheet = excelHelper.AddWorksheet("Sheet1");
// 设置单元格的值
excelHelper.SetCellValue(worksheet, "A1", "ID");
excelHelper.SetCellValue(worksheet, "B1", "Name");
excelHelper.SetCellValue(worksheet, "C1", "Age");
// 填充一些示例数据
excelHelper.SetCellValue(worksheet, "A2", 1);
excelHelper.SetCellValue(worksheet, "B2", "Alice");
excelHelper.SetCellValue(worksheet, "C2", 30);
excelHelper.SetCellValue(worksheet, "A3", 2);
excelHelper.SetCellValue(worksheet, "B3", "Bob");
excelHelper.SetCellValue(worksheet, "C3", 25);
// 自动调整列宽
excelHelper.AutoFitColumns(worksheet);
// 保存 Excel 文件到指定路径
excelHelper.Save(@"C:\path\to\your\output.xlsx");
Console.WriteLine("Excel 文件已成功创建并保存!");
}
}
}
解释
-
ExcelHelper 类:
AddWorksheet
: 添加一个新的工作表并返回该工作表对象。如果工作表名称已经存在,则抛出异常。SetCellValue
: 设置指定单元格的值。AutoFitColumns
: 自动调整所有列的宽度以适应内容。Save
: 将 Excel 文件保存到指定路径。Dispose
: 释放ExcelPackage
占用的资源。
-
使用示例:
- 创建
ExcelHelper
实例。 - 添加一个名为 "Sheet1" 的工作表。
- 设置单元格 A1、B1 和 C1 的值分别为 "ID"、"Name" 和 "Age"。
- 填充一些示例数据到工作表中。
- 自动调整列宽。
- 将 Excel 文件保存到指定路径。
- 创建
这样,你就可以通过 ExcelHelper
类方便地生成和操作 Excel 文件了。如果你有更多复杂的需求,可以在 ExcelHelper
类中继续添加更多的方法。