如何读取忽略前两行的excel文件

我有一个111行的Excel文件。 我需要省略工作表的前两行,然后使用java和POI读取文件。

你必须使用rownum()跳过前两行,这里是示例代码

 HSSFWorkbook workBook = new HSSFWorkbook (fileSystem); HSSFSheet sheet = workBook.getSheetAt (0); Iterator<HSSFRow> rows = sheet.rowIterator (); while (rows.hasNext ()) { HSSFRow row = rows.next (); // display row number in the console. System.out.println ("Row No.: " + row.getRowNum ()); if(row.getRowNum()==0 || row.getRowNum()==1){ continue; //just skip the rows if row number is 0 or 1 } } 

这是完整的例子

 import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; public class POIExcelReader { /** Creates a new instance of POIExcelReader */ public POIExcelReader () {} @SuppressWarnings ("unchecked") public void displayFromExcel (String xlsPath) { InputStream inputStream = null; try { inputStream = new FileInputStream (xlsPath); } catch (FileNotFoundException e) { System.out.println ("File not found in the specified path."); e.printStackTrace (); } POIFSFileSystem fileSystem = null; try { fileSystem = new POIFSFileSystem (inputStream); HSSFWorkbook workBook = new HSSFWorkbook (fileSystem); HSSFSheet sheet = workBook.getSheetAt (0); Iterator<HSSFRow> rows = sheet.rowIterator (); while (rows.hasNext ()) { HSSFRow row = rows.next (); if(row.getRowNum()==0 || row.getRowNum()==1){ continue; //just skip the rows if row number is 0 or 1 } // once get a row its time to iterate through cells. Iterator<HSSFCell> cells = row.cellIterator (); while (cells.hasNext ()) { HSSFCell cell = cells.next (); System.out.println ("Cell No.: " + cell.getCellNum ()); /* * Now we will get the cell type and display the values * accordingly. */ switch (cell.getCellType ()) { case HSSFCell.CELL_TYPE_NUMERIC : { // cell type numeric. System.out.println ("Numeric value: " + cell.getNumericCellValue ()); break; } case HSSFCell.CELL_TYPE_STRING : { // cell type string. HSSFRichTextString richTextString = cell.getRichStringCellValue (); System.out.println ("String value: " + richTextString.getString ()); break; } default : { // types other than String and Numeric. System.out.println ("Type not supported."); break; } } } } } catch (IOException e) { e.printStackTrace (); } } public static void main (String[] args) { POIExcelReader poiExample = new POIExcelReader (); String xlsPath = "c://test//test.xls"; poiExample.displayFromExcel (xlsPath); } } 

Apache POI提供了两种访问Excel文件中的行和单元格的方法。 一个是给你所有条目的迭代器,另一个是通过索引循环。 (POI也会告诉你开始/结束行/列)。 迭代器通常使用起来更简单,但两者同样快。

如果你对提取行有特定的要求,我build议你使用后者。 你的代码想要是这样的:

 int FIRST_ROW_TO_GET = 2; // 0 based Sheet s = wb.getSheetAt(0); for (int i = FIRST_ROW_TO_GET; i < s.getLastRowNum(); i++) { Row row = s.getRow(i); if (row == null) { // The whole row is blank } else { for (int cn=row.getFirstCellNum(); cn<row.getLastCellNum(); cn++) { Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL); if (c == null) { // The cell is empty } else { // Process the cell } } } }