반응형
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 열이 동일하지 않습니다.
당신이 할 수 있는 두 가지가 있습니다.
사용하다
int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells();
또는
int noOfColumns = sh.getRow(0).getLastCellNum();
그들 사이에는 미묘한 차이가 있습니다.
- 옵션 1은 실제로 내용으로 채워진 열의 수를 제공합니다(10개의 열 중 두 번째 열이 채워지지 않으면 9개가 됩니다).
- 옵션 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;
}
때때로 사용하기row.getLastCellNum()
파일에 실제로 채워진 값보다 높은 값을 제공합니다.
아래 방법을 사용하여 실제 값이 포함된 마지막 열 인덱스를 가져왔습니다.
private int getLastFilledCellPosition(Row row) {
int columnIndex = -1;
for (int i = row.getLastCellNum() - 1; i >= 0; i--) {
Cell cell = row.getCell(i);
if (cell == null || CellType.BLANK.equals(cell.getCellType()) || StringUtils.isBlank(cell.getStringCellValue())) {
continue;
} else {
columnIndex = cell.getColumnIndex();
break;
}
}
return columnIndex;
}
언급URL : https://stackoverflow.com/questions/18489817/get-number-of-columns-of-a-particular-row-in-given-excel-using-java
반응형
'programing' 카테고리의 다른 글
목록 이해를 사용하여 중첩된 목록을 처리하려면 어떻게 해야 합니까? (0) | 2023.05.29 |
---|---|
동시/동시 파일 전송 속도 향상 (0) | 2023.05.29 |
R에서 문자열의 길이를 찾는 방법 (0) | 2023.05.29 |
Heroku + node.js 오류(웹 프로세스가 시작 후 60초 이내에 $PORT에 바인딩하지 못함) (0) | 2023.05.29 |
메인 스토리보드 파일을 신속하게 사용하려면 앱 대리자가 창 속성을 구현해야 합니다. (0) | 2023.05.29 |