C# NPOI操作Excel汇总

作者:宇宙中心我曹县2024.01.18 11:37浏览量:3

简介:本文将介绍如何使用C#和NPOI库对Excel进行汇总操作,包括读取、修改和保存Excel文件。我们将通过实例展示如何使用NPOI读取Excel文件中的数据,并对数据进行汇总。

在C#中操作Excel,我们通常会使用NPOI库。NPOI是一个开源的.NET库,用于读写Excel、Word等Office文件。
首先,确保你已经安装了NPOI库。你可以通过NuGet包管理器来安装它:

  1. Install-Package NPOI

下面是一个简单的例子,演示如何使用NPOI读取Excel文件中的数据,并对数据进行汇总:

  1. using NPOI.SS.UserModel;
  2. using NPOI.XSSF.UserModel; // For .xlsx
  3. using System.IO;
  4. using System.Collections.Generic;
  5. public class ExcelSummarizer
  6. {
  7. public void SummarizeExcelFile(string filePath)
  8. {
  9. // 创建一个新的文件流以读取Excel文件
  10. using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
  11. {
  12. // 创建新的SS工作簿对象,表示整个Excel文件
  13. IWorkbook workbook = new XSSFWorkbook(file);
  14. // 获取第一个工作表(第一个sheet)
  15. ISheet sheet = workbook.GetSheetAt(0);
  16. // 获取行数和列数
  17. int rowCount = sheet.LastRowNum + 1; // LastRowNum+1 是为了包括最后一行(如果存在)
  18. int colCount = sheet.GetRow(0).LastCellNum; // 使用第一行的列数作为整个工作表的列数
  19. // 创建一个列表来存储所有行的数据
  20. List<string[]> rowDataList = new List<string[]>();
  21. // 遍历每一行,读取数据并添加到列表中
  22. for (int i = 0; i < rowCount; i++)
  23. {
  24. IRow row = sheet.GetRow(i); // 获取第i行
  25. string[] rowData = new string[colCount]; // 创建一个字符串数组来存储这一行的数据
  26. for (int j = 0; j < colCount; j++)
  27. {
  28. ICell cell = row.GetCell(j); // 获取第j个单元格
  29. if (cell != null) // 检查单元格是否为空
  30. {
  31. rowData[j] = cell.ToString(); // 将单元格的值添加到字符串数组中
  32. }
  33. }
  34. rowDataList.Add(rowData); // 将字符串数组添加到列表中
  35. }
  36. // 现在rowDataList包含了所有行的数据,可以进行汇总操作了。例如,计算总和、平均值等。
  37. // ... 汇总逻辑代码 ...
  38. }
  39. }
  40. }

在上面的代码中,我们首先打开一个Excel文件,并创建一个新的SS工作簿对象来表示整个Excel文件。然后我们获取第一个工作表,并确定有多少行和列。接下来,我们遍历每一行,读取单元格的值并将其存储在一个字符串数组中。最后,我们将这些字符串数组添加到一个列表中。现在,你可以根据需要对这个列表进行操作,例如计算总和、平均值等。注意,上述代码仅处理数值类型的数据。如果你需要处理日期或其他非数值类型的数据,你需要根据具体的需求进行调整。希望这个简单的例子可以帮助你入门NPOI操作Excel。