C# NPOI 是一个基于 .NET Framework 的 Excel 和 Word 操作库。它不仅可以读取和写入 Excel 和 Word 文件,还可以对 Excel 和 Word 文件进行格式化和样式编辑,支持多种常见的文件格式,如XLS,XLSX等。本篇文章将针对C# NPOI操作Excel进行举例详解。
1.引用 NPOI 库
使用 NuGet 包管理器引用 NPOI 库,打开开发环境(Visual Studio)的管理控制面板,选择 NuGet 程序包管理器,并在搜索栏中搜索 NPOI 包,然后添加到项目中。
2.创建或打开 Excel 文件
使用 C# NPOI 提供的 HSSFWorkbook 类,创建一个新的 Excel 文件,如下所示:
//创建新的Excel HSSFWorkbook workbook = new HSSFWorkbook(); //获取工作簿 HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("Sheet1");
我们也可以使用 C# NPOI 提供的 FileStream 类,打开一个现有的 Excel 文件,如下所示:
FileStream file = new FileStream("test.xls", FileMode.Open); HSSFWorkbook workbook = new HSSFWorkbook(file);
3.写入数据到 Excel 文件
使用 C# NPOI 提供的 HSSFRow 和 HSSFCell 类,我们可以按顺序写入单元格数据到 Excel 文件,如下所示:
HSSFRow row1 = (HSSFRow)sheet1.CreateRow(0); HSSFCell cellA1 = (HSSFCell)row1.CreateCell(0); cellA1.SetCellValue("Name"); HSSFCell cellB1 = (HSSFCell)row1.CreateCell(1); cellB1.SetCellValue("Age");
在该示例中,我们创建了一个新的行和两个列 A1 和 B1,并分别将 "Name" 和 "Age" 字符串值写入单元格。
对于数值类型的数据,我们可以使用以下代码将其写入单元格:
HSSFRow row2 = (HSSFRow)sheet1.CreateRow(1); HSSFCell cellA2 = (HSSFCell)row2.CreateCell(0); cellA2.SetCellValue(1); HSSFCell cellB2 = (HSSFCell)row2.CreateCell(1); cellB2.SetCellValue(20);
在该示例中,我们创建了另一行和两个列 A2 和 B2,并将整数值 1 和 20 分别写入单元格。
4.设置单元格样式
使用 C# NPOI 提供的 HSSFFont 和 HSSFCellStyle 类,我们可以设置单元格样式,如下所示:
//创建字体 HSSFFont font = (HSSFFont)workbook.CreateFont(); font.FontHeightInPoints = 12; font.Boldweight = (short)FontBoldWeight.Bold; //创建样式 HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle(); style.Alignment = HorizontalAlignment.Center; style.VerticalAlignment = VerticalAlignment.Center; //应用样式和格式到单元格 cellA1.CellStyle = style; cellA1.SetCellValue("姓名");
在该示例中,我们创建了一个字体对象并设置字体高度和粗细,然后创建一个样式对象并设置水平和垂直对齐属性,最后将样式应用到单元格 A1 中。
5.保存 Excel 文件
使用 C# NPOI 提供的 HSSFWorkbook.Write 方法,我们可以将创建的 Excel 工作簿保存到指定的文件路径,如下所示:
//打开或创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //获取Sheet1工作表 HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("Sheet1"); //写入数据 //设置样式 //保存工作簿到文件 using (FileStream file = new FileStream("test.xls", FileMode.Create)) { workbook.Write(file); }
在该示例中,我们使用 FileStream 将 Excel 工作簿保存到 test.xls 文件,对于已存在的文件,可以使用 FileMode.OpenOrCreate 选项打开或创建文件。
在数据量较大的情况下,使用 NPOI 的代码编写容易出现问题,如在插入单元格时遇到的重复单元格值,从而产生逻辑冲突。需要注意的是,建议在大型数据集的情况下,您可以考虑使用 GridView 控件和 DataSet 来显示和加载数据,然后将数据导出到 Excel 文件。
总结:在C# NPOI操作Excel,我们需要引用相应的 NPOI 库,对于常见的 Excel 操作包括创建或打开文件、写入数据到文件、设置单元格格式和样式、保存文件等,这些操作在 NPOI 中都得到了很好的支持。