'Total'문자열이있는 스프레드 시트에서 셀을 찾고 있는데 해당 셀이 항상 동일한 셀/열 (0 기반 인덱스의 10 번째 셀) 인 다른 셀의 전체 값을 찾으려는 행을 사용하십시오.Java POI : 문자열 값이있는 Excel 셀을 찾고 해당 위치를 사용하여 다른 셀을 찾는 위치 (행)를 얻는 방법
나는 오류 (구문)가없는 다음 코드,하지만 findCell 방법은 반환하지 않습니다 않은 ROWNUM 값 :
public static void main(String[] args) throws IOException{
String fileName = "C:\\file-path\\report.xls";
String cellContent = "Total";
int rownr=0, colnr = 10;
InputStream input = new FileInputStream(fileName);
HSSFWorkbook wb = new HSSFWorkbook(input);
HSSFSheet sheet = wb.getSheetAt(0);
rownr = findRow(sheet, cellContent);
output(sheet, rownr, colnr);
finish();
}
private static void output(HSSFSheet sheet, int rownr, int colnr) {
/*
* This method displays the total value of the month
*/
HSSFRow row = sheet.getRow(rownr);
HSSFCell cell = row.getCell(colnr);
System.out.println("Your total is: " + cell);
}
private static int findRow(HSSFSheet sheet, String cellContent){
/*
* This is the method to find the row number
*/
int rowNum = 0;
for(Row row : sheet) {
for(Cell cell : row) {
while(cell.getCellType() == Cell.CELL_TYPE_STRING){
if(cell.getRichStringCellValue().getString() == cellContent);{
rowNum = row.getRowNum();
return rowNum;
}
}
}
}
return rowNum;
}
private static void finish() {
System.exit(0);
}
}
감사합니다. @ msi. 제안 된 코드가 문제를 해결하여 완벽하게 작동했습니다. 나는 상대적으로 프로그래밍에 익숙하지 않고 다음과 같은 질문을 할 수있다. 1. 왜 while 문을 변경 했는가? 2. for 루프의 반환 = 0. 왜 다시 한번 감사하라! – lv10
'while' 루프를 사용하면 'total-cell'의 왼쪽에있는 모든 셀이 string으로 채워져 있다고 가정합니다. 예를 들어 다음과 같은 셀의 경우 : | | 1 | 합계 | 'while'은 1의 값에서 깨질 것이기 때문에 while과 함께 발견 될 것입니다. 'total-cell'이없는 경우를 대비해서 0을 반환합니다. – msi
두 문자열을 비교하려면 equals 메서드를 사용해야합니다. '=='는 객체가 아닌 원시 타입을 비교하는 데 사용됩니다. 그리고 getString()은 Object를 반환합니다. 문자열에 대해 더 자세히 알고 싶다면 문자열 풀 및 인턴 방법을 읽어보십시오. 이것은 '=='를 사용하여 비교할 때 올바른 경우를 찾을 수있는 곳입니다. 사용자 입력이 문자열의 끝에 추가 공백을 포함하기를 좋아하기 때문에 trim 메소드도 사용했습니다. – msi