C#使用NPOI对Excel数据进行导入导出

1. 导入NPOI和创建Excel对象

在C#中使用NPOI库可以很方便地对Excel进行导入和导出操作。首先我们需要在项目中导入NPOI的相关引用。可以使用NuGet包管理器搜索并安装NPOI。

using NPOI.HSSF.UserModel; // 导入HSSF命名空间

using NPOI.XSSF.UserModel; // 导入XSSF命名空间

using NPOI.SS.UserModel; // 导入公共命名空间

接下来,我们需要创建一个Excel工作簿对象:

IWorkbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿

这里我选择了XSSFWorkbook,表示创建一个新的xlsx格式的Excel文件。如果需要创建xls格式的Excel文件,可以使用HSSFWorkbook。

2. 创建工作表和设置单元格样式

2.1 创建工作表

ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建一个工作表

可以使用CreateSheet方法来创建一个新的工作表。可以为工作表指定名称,也可以使用默认名称。

2.2 设置单元格样式

// 创建单元格样式

ICellStyle cellStyle = workbook.CreateCellStyle();

cellStyle.Alignment = HorizontalAlignment.Center; // 水平居中对齐

cellStyle.VerticalAlignment = VerticalAlignment.Center; // 垂直居中对齐

// 创建字体

IFont font = workbook.CreateFont();

font.Boldweight = (short)FontBoldWeight.Bold; // 设置粗体

font.FontHeightInPoints = 12; // 设置字体大小

cellStyle.SetFont(font);

通过创建CellStyle对象和Font对象,可以设置单元格的样式,如对齐方式、字体大小、粗体等。

3. 导出数据到Excel

3.1 创建表头

IRow headerRow = sheet.CreateRow(0); // 创建表头行

for (int i = 0; i < data.Columns.Count; i++)

{

ICell cell = headerRow.CreateCell(i); // 创建表头单元格

cell.SetCellValue(data.Columns[i].ColumnName); // 设置表头文本

cell.CellStyle = cellStyle; // 设置单元格样式

}

通过CreateRow和CreateCell方法可以创建行和单元格,然后使用SetCellValue方法设置单元格的值,再通过CellStyle属性设置单元格样式。

3.2 填充数据

for (int i = 0; i < data.Rows.Count; i++)

{

IRow dataRow = sheet.CreateRow(i + 1); // 创建数据行

for (int j = 0; j < data.Columns.Count; j++)

{

ICell cell = dataRow.CreateCell(j); // 创建数据单元格

cell.SetCellValue(data.Rows[i][j].ToString()); // 设置数据值

}

dataRow.RowStyle = cellStyle; // 设置行样式

}

使用CreateRow和CreateCell方法创建行和单元格,然后使用SetCellValue方法设置单元格的值。

4. 从Excel导入数据

4.1 打开Excel文件

using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))

{

workbook = new XSSFWorkbook(file); // 打开Excel文件

ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表

}

可以使用FileStream来打开Excel文件,然后通过XSSFWorkbook或HSSFWorkbook来实例化工作簿对象,最后使用GetSheetAt方法获取指定的工作表。

4.2 读取数据

DataTable dataTable = new DataTable();

// 读取表头

IRow headerRow = sheet.GetRow(0); // 获取表头行

for (int i = 0; i < headerRow.LastCellNum; i++)

{

ICell cell = headerRow.GetCell(i); // 获取表头单元格

string columnName = cell.StringCellValue; // 获取表头文本

dataTable.Columns.Add(columnName); // 添加列

}

// 读取数据

for (int i = 1; i <= sheet.LastRowNum; i++)

{

IRow dataRow = sheet.GetRow(i); // 获取数据行

DataRow newRow = dataTable.NewRow();

for (int j = 0; j < dataRow.LastCellNum; j++)

{

ICell cell = dataRow.GetCell(j); // 获取数据单元格

if (cell != null)

{

newRow[j] = cell.ToString(); // 获取数据值

}

}

dataTable.Rows.Add(newRow); // 添加行

}

通过GetRow和GetCell方法可以获取指定行和单元格,然后使用StringCellValue属性获取文本值。

总结:

本文介绍了使用NPOI库在C#中对Excel数据进行导入和导出的方法。首先通过创建Workbook对象来创建一个Excel文件,在工作表中创建表头和数据,并设置单元格的样式,然后可以将数据导出到Excel文件中。在导入数据时,通过打开Excel文件,获取工作表的方式来读取数据。

使用NPOI库可以轻松地操作Excel,并且提供了丰富的方法来处理数据。在实际开发中,可以根据需求进行灵活运用,满足各种Excel数据处理的需求。

后端开发标签