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数据处理的需求。