NPOI取得Excel 的最后一行和最后一列

本文介绍了一种使用C#从现有Excel文件(.xls格式)中读取数据并将其转换为DataTable的方法。首先,通过指定路径打开Excel文件,并利用HSSFWorkbook加载工作簿。接着,获取名为“Rawdata”的工作表,并读取第一行的列名。最后,确定总列数及行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档

                FileStream file = new FileStream("C:\test.xls", FileMode.Open, FileAccess.Read);

 

                HSSFWorkbook workbook = new HSSFWorkbook(file);

                //获取excel的指定sheet"Rawdata"

                Sheet sheet = workbook.GetSheet("Rawdata");

 

                DataTable table = new DataTable();

                //获取sheet的首行

                Row headerRow = sheet.GetRow(0);

                //最后一个方格的编号 即总的列数

                int cellCount = headerRow.LastCellNum;

                 //最后一行的标号  即总的行数

                int rowCount = sheet.LastRowNum;

### 使用NPOI读取Excel文档中指定空列的最后一行数据 为了实现这一目标,可以按照以下方法编写代码。此过程涉及遍历工作表中的每一行,并检查特定列是否为空,直到找到最后一行。 首先安装 NPOI 库[^3]。接着,在 C# 中创建一个程序来加载 Excel 文件并访问所需的工作表: ```csharp using System; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; using System.IO; public class ReadExcelExample { public static void Main(string[] args) { string filePath = "path/to/your/excel/file.xlsx"; using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = null; if (filePath.EndsWith(".xlsx")) workbook = new XSSFWorkbook(fileStream); else if (filePath.EndsWith(".xls")) workbook = new HSSFWorkbook(fileStream); ISheet sheet = workbook.GetSheetAt(0); // 假设只处理第一个工作表 int lastRowWithNullInColumnB = FindLastRowWithNullInSpecificColumn(sheet, 1 /* 列索引 */); Console.WriteLine($"The last row with a null value in column B is: {lastRowWithNullInColumnB}"); } } private static int FindLastRowWithNullInSpecificColumn(ISheet sheet, int columnIndex) { int? lastRowNumber = null; for (int rowIndex = sheet.FirstRowNum; rowIndex <= sheet.LastRowNum; rowIndex++) { IRow currentRow = sheet.GetRow(rowIndex); if (currentRow != null && IsCellNullOrEmpty(currentRow.GetCell(columnIndex))) { lastRowNumber = rowIndex; } } return lastRowNumber ?? -1; // 如果没有发现任何符合条件的行则返回-1表示不存在这样的行。 } private static bool IsCellNullOrEmpty(ICell cell) { return cell == null || cell.CellType == CellType.Blank || (cell.CellType == CellType.String && string.IsNullOrWhiteSpace(cell.ToString())); } } ``` 这段代码定义了一个 `FindLastRowWithNullInSpecificColumn` 方法,该方法接收一个工作表对象 (`ISheet`) 一列的索引作为参数。它会迭代整个工作表,寻找给定列中最下面的一个空白单元格所在的行号。这里假设列索引是从零开始计数的,因此对于想要查找的是第二列(即'B'),应该传递整数值 '1' 给这个函数。 此外还提供了一个辅助性的私有静态布尔型的方法 `IsCellNullOrEmpty`,用来判断某个单元格是不是空或者是空白字符串.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值