Получить количество столбцов определенной строки в данном excel, используя Java
Мне нужно количество столбцов определенной строки в 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 не одинаковы.
Ответы
Ответ 1
Есть две вещи, которые вы можете сделать
использовать
int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells();
или
int noOfColumns = sh.getRow(0).getLastCellNum();
Существует отличная разница между ними
- Вариант 1 дает столбцы, которые фактически заполнены содержимым (если второй столбец из 10 столбцов не заполнен, вы получите 9)
- Вариант 2 просто дает вам индекс последнего столбца. Следовательно, сделано 'getLastCellNum()'
Ответ 2
/** 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;
}