使用Java获取给定excel中特定行的列数

我想要在Excel中的特定行的列数。 这怎么可能? 我使用POI API

但我只能得到列数到7。

try { fileInputStream = new FileInputStream(file); workbook = new HSSFWorkbook(fileInputStream); Sheet sheet = workbook.getSheet("0"); int numberOfCells = 0; Iterator rowIterator = sheet.rowIterator(); /** * Escape the header row * */ if (rowIterator.hasNext()) { Row headerRow = (Row) rowIterator.next(); //get the number of cells in the header row numberOfCells = headerRow.getPhysicalNumberOfCells(); } System.out.println("number of cells "+numberOfCells); } 

我想要一个特定行号的列数为10。 excel列不一样

有两件事你可以做

使用

 int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells(); 

要么

 int noOfColumns = sh.getRow(0).getLastCellNum(); 

他们之间有一个很好的区别

  1. 选项1给出了实际填充内容的列号(如果10列的第二列未填满,则会得到9)
  2. 选项2只是给你最后一列的索引。 因此完成'getLastCellNum()'
 /** Count max number of nonempty cells in sheet rows */ private int getColumnsCount(XSSFSheet xssfSheet) { int result = 0; Iterator<Row> rowIterator = xssfSheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); List<Cell> cells = new ArrayList<>(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { cells.add(cellIterator.next()); } for (int i = cells.size(); i >= 0; i--) { Cell cell = cells.get(i-1); if (cell.toString().trim().isEmpty()) { cells.remove(i-1); } else { result = cells.size() > result ? cells.size() : result; break; } } } return result; }