从Excel文件中的特定行开始读取

从Excel文件中的特定行开始读取,excel,apache-poi,Excel,Apache Poi,我有一个Excel文件,大约有7000行要读取。Excel文件包含目录和实际内容数据,详情如下 我希望避免目录中的所有行,而是从实际的内容数据开始读取。这是因为,如果我需要读取“CPU_INFO”的数据,循环和搜索字符串会出现两次,1]来自内容表,2]来自实际内容 因此,我想知道是否有任何方法可以指向Start Row Index开始读取Excel文件的数据内容,从而跳过整个目录部分?,如以下所示: 在某些情况下,迭代时,您需要完全控制丢失或空白行或单元格的处理方式,并且需要确保访问每个单元格,

我有一个Excel文件,大约有7000行要读取。Excel文件包含目录和实际内容数据,详情如下

我希望避免目录中的所有行,而是从实际的内容数据开始读取。这是因为,如果我需要读取“CPU_INFO”的数据,循环和搜索字符串会出现两次,1]来自内容表,2]来自实际内容

因此,我想知道是否有任何方法可以指向Start Row Index开始读取Excel文件的数据内容,从而跳过整个目录部分?

,如以下所示:

在某些情况下,迭代时,您需要完全控制丢失或空白行或单元格的处理方式,并且需要确保访问每个单元格,而不仅仅是文件中定义的单元格。(CellIterator只返回文件中定义的单元格,这些单元格主要是带有值或样式的单元格,但它取决于Excel)

在这种情况下,您应该获取行的第一列和最后一列信息,然后调用getCell(int,MissingCellPolicy)来获取单元格。使用控制空白或空单元格的处理方式

如果我们从该文档中获取示例代码,并根据您的需求对其进行调整,使其从第7000行开始,并且假设您不想超过15k行,我们将得到:

// Decide which rows to process
int rowStart = Math.min(7000, sheet.getFirstRowNum());
int rowEnd = Math.max(1500, sheet.getLastRowNum());

for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
   Row r = sheet.getRow(rowNum);

   int lastColumn = Math.max(r.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT);

   for (int cn = 0; cn < lastColumn; cn++) {
      Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
      if (c == null) {
         // The spreadsheet is empty in this cell
      } else {
         // Do something useful with the cell's contents
      }
   }
}
//决定要处理的行
int rowStart=Math.min(7000,sheet.getFirstRowNum());
int rowEnd=Math.max(1500,sheet.getLastRowNum());
对于(int-rowNum=rowStart;rowNum
请务必阅读选择标签时出现的说明!