使用 ClosedXML 进行 Excel 操作
1. 引用 ClosedXML 库
首先,确保你的项目已经引用了 ClosedXML 库。你可以通过 NuGet 包管理器或在 Visual Studio 中的包管理控制台中执行以下命令来安装它:
Install-Package ClosedXML
或者通过 NuGet 界面搜索 ClosedXML 并安装。
2. 创建和保存 Excel 文件
让我们首先创建一个新的 Excel 文件,并在其中添加一些数据:
using ClosedXML.Excel;
using System;
class Program
{
static void Main()
{
// 创建一个新的工作簿
var workbook = new XLWorkbook();
// 添加一个工作表
var worksheet = workbook.Worksheets.Add("SampleSheet");
// 在单元格中写入数据
worksheet.Cell("A1").Value = "Name";
worksheet.Cell("B1").Value = "Age";
worksheet.Cell("A2").Value = "John Doe";
worksheet.Cell("B2").Value = 30;
// 保存文件
workbook.SaveAs("Sample.xlsx");
Console.WriteLine("Excel 文件已创建和保存。");
}
}
这个简单的示例创建了一个名为 “Sample.xlsx” 的 Excel 文件,其中包含名字和年龄的示例数据。
3. 读取 Excel 文件
现在,我们将读取之前创建的 Excel 文件:
using ClosedXML.Excel;
using System;
class Program
{
static void Main()
{
try
{
// 打开现有工作簿
var workbook = new XLWorkbook("Sample.xlsx");
// 获取工作表
var worksheet = workbook.Worksheet(1);
// 读取单元格数据
string name = worksheet.Cell("A2").Value.ToString();
int age = worksheet.Cell("B2").GetValue<int>();
// 在控制台输出
Console.WriteLine($"姓名:{name}, 年龄:{age}");
}
catch (Exception ex)
{
Console.WriteLine($"读取 Excel 文件时出错:{ex.Message}");
}
}
}
这个例子展示了如何打开之前创建的 Excel 文件,并读取单元格中的数据。
4. 导出和读取复杂数据
假设我们有一个包含员工信息的 C# 类:
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
public string Department { get; set; }
}
我们可以使用 ClosedXML 导出和读取这种复杂数据:
using ClosedXML.Excel;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 创建一个新的工作簿
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("EmployeeData");
// 导出数据到 Excel
var employees = new List<Employee>
{
new Employee { Name = "Alice", Age = 28, Department = "IT" },
new Employee { Name = "Bob", Age = 35, Department = "HR" },
new Employee { Name = "Charlie", Age = 42, Department = "Finance" }
};
// 写入表头
worksheet.Cell("A1").Value = "Name";
worksheet.Cell("B1").Value = "Age";
worksheet.Cell("C1").Value = "Department";
// 写入数据
for (int i = 0; i < employees.Count; i++)
{
worksheet.Cell(i + 2, 1).Value = employees[i].Name;
worksheet.Cell(i + 2, 2).Value = employees[i].Age;
worksheet.Cell(i + 2, 3).Value = employees[i].Department;
}
// 保存文件
workbook.SaveAs("EmployeeData.xlsx");
Console.WriteLine("Employee 数据已成功导出到 Excel 文件。");
// 读取导出的 Excel 文件
var readWorkbook = new XLWorkbook("EmployeeData.xlsx");
var readWorksheet = readWorkbook.Worksheet(1);
// 输出读取的数据
Console.WriteLine("读取导出的 Excel 文件数据:");
for (int i = 2; i <= readWorksheet.RowsUsed().Count(); i++)
{
string name = readWorksheet.Cell(i, 1).Value.ToString();
int age = readWorksheet.Cell(i, 2).GetValue<int>();
string department = readWorksheet.Cell(i, 3).Value.ToString();
Console.WriteLine($"姓名:{name}, 年龄:{age}, 部门:{department}");
}
}
}
这个示例演示了如何将包含复杂数据的 C# 对象列表导出到 Excel 文件,并在读取时将其还原。
通过以上实例,你可以更好地了解如何使用 ClosedXML 进行 Excel 文件的创建、导出和读取。确保在实际项目中根据具体需求进行适当的调整。