在数据处理的工作中,我们经常需要与Excel打交道,进行数据的导出和导入。而在C#语言中处理此类操作时,一个强大的工具就是NPOI库。它提供了丰富的功能来帮助我们高效、便捷地进行Excel的操作。
接下来我将向大家介绍如何编写一个基于C#和NPOI的用于导出和导入Excel的帮助类。这个帮助类可以让我们轻松地将数据导出到Excel文件,或者从Excel文件中导入数据。
我们需要引入NPOI库的相关命名空间:
```csharp
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;
using System.Collections.Generic;
```
接下来我们将创建一个名为`ExcelHelper`的帮助类,并在其中定义以下两个方法:`ExportToExcel`和`ImportFromExcel`。
是`ExportToExcel`方法,它将数据导出到Excel文件。这个方法需要接收一个`List`类型的数据集和一个文件路径作为参数。
```csharp
public static void ExportToExcel(List data, string filePath)
{
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");
var headerRow = sheet.CreateRow(0);
var properties = typeof(T).GetProperties();
for (int i = 0; i < properties.Length; i++)
{
var cell = headerRow.CreateCell(i);
cell.SetCellValue(properties[i].Name);
}
for (int i = 0; i < data.Count; i++)
{
var row = sheet.CreateRow(i + 1);
var entity = data[i];
for (int j = 0; j < properties.Length; j++)
{
var cell = row.CreateCell(j);
cell.SetCellValue(properties[j].GetValue(entity));
}
}
using (var stream = File.Create(filePath))
{
workbook.Write(stream);
}
}
```
接下来是`ImportFromExcel`方法,它将Excel文件中的数据导入到一个`List`类型的集合中。这个方法需要接收一个表示Excel文件路径的字符串和一个类型参数作为输入,并返回一个包含导入数据的集合。
```csharp
public static List ImportFromExcel(string filePath)
{
var list = new List();
using (var stream = File.OpenRead(filePath))
{
var workbook = new HSSFWorkbook(stream);
var sheet = workbook.GetSheetAt(0);
var headerRow = sheet.GetRow(0);
var properties = typeof(T).GetProperties();
for (int i = 0; i < properties.Length; i++)
{
properties[i].SetValue(list, headerRow.GetCell(i).StringCellValue);
}
for (int i = 1; i <= sheet.LastRowNum; i++)
{
var row = sheet.GetRow(i);
var entity = (T)Activator.CreateInstance(typeof(T));
for (int j = 0; j < properties.Length; j++)
{
var cell = row.GetCell(j);
properties[j].SetValue(entity, cell.ToString());
}
list.Add(entity);
}
}
return list;
}
```
以上就是一个简单的C#用NPOI导出和导入Excel的帮助类。通过这两个方法,我们可以方便地将数据导出到Excel文件,或者从Excel文件中导入数据。在实际使用中,只需要调用相应的方法,传入相应的参数即可完成操作。例如,如果我们有一个包含人员信息的数据集,我们可以直接调用`ExportToExcel`方法将其导出为Excel文件;同样地,我们也可以使用`ImportFromExcel`方法从一个Excel文件中导入数据到一个列表中。
希望以上的内容能够帮助到大家,如果有任何问题,欢迎留言交流。