programing

Apache POI가 있는 셀 참조 문자 식별자로 셀 가져오기

sourcejob 2023. 6. 23. 22:02
반응형

Apache POI가 있는 셀 참조 문자 식별자로 셀 가져오기

셀 참조로 행에서 셀을 가져오려고 하는데 문제가 있습니다.예를 들어 다음과 같습니다.

row.getCell(CellReference.convertColStringToIndex("B"));

열 인덱스가 다음과 같은 경우에는 잘 작동합니다.1하지만 컬럼이 삭제되었다면,B열 인덱스가 되었습니다.2방법:CellReference.convertColStringToIndex("B")아직 변환 중입니다.1내 칼럼을 얻을 수 없는 경우, 나는 받는 중입니다.null.

그렇다면 문자인 셀 식별자에 따라 행에서 열을 어떻게 가져올 수 있는지가 문제입니다.

이전 질문에 대한대답을 보십시오.

CellReference 유틸리티 클래스를 사용하여 도움을 주고 싶을 수 있습니다.Excel 스타일 문자+숫자 참조와 POI 스타일 0 기반 행+열 간 변환을 제공합니다.사용 시 다음과 같은 작업을 수행할 수 있습니다.

 Sheet sheet = workbook.getSheet("MyInterestingSheet");

 CellReference ref = new CellReference("B12");
 Row r = sheet.getRow(ref.getRow());
 if (r != null) {
    Cell c = r.getCell(ref.getCol());
 }

그러면 주어진 Excel 스타일 참조(정의된 경우 null)에서 셀을 찾을 수 있습니다.

여러 행/도메인을 가져오는 경우:

  CellReference ref1 = new CellReference("A36"); // First LINE 1
  CellReference ref2 = new CellReference("B36"); 
  CellReference ref3 = new CellReference("C36"); 
  CellReference ref4 = new CellReference("D36");

  XSSFRow r1 = sheet.getRow(ref1.getRow()); 
    if (r1 != null) {
            Cell a36 = r1.getCell(ref1.getCol());
            Cell b36 = r1.getCell(ref2.getCol());
            Cell c36 = r1.getCell(ref3.getCol());
            Cell d36 = r1.getCell(ref4.getCol());
            Cell e36 = r1.getCell(ref5.getCol());
                            
            AMT1 = a36.getStringCellValue();
            AMT2 = b36.getStringCellValue();
            AMT3 = c36.getStringCellValue();
            AMT4 = d36.getNumericCellValue();
            AMT5 = e36.getNumericCellValue();
            AMT5A = AMT5.intValue();
           }           

여기서 r1은 첫 번째 행입니다.이렇게 하면 첫 번째 지정된 행에 있는 xlsx 항목이 아래와 같이 변수(AMTx)에 할당됩니다.변수 지정은 java 파일의 "public class ......" 줄 바로 뒤에 배치합니다.

  public static String AMT1;//Line 1 
  public static String AMT2;  
  public static String AMT3; 
  public static Double AMT4;  
  public static Double AMT5;  
  public static Integer AMT5A;  

Excel xlsx 파일은 셀 내에서 숫자를 이중으로 저장하므로 AMT5A에서 정수로 변환됩니다.

모두: 코드에서는 r1(1행)이 셀이 위치한 실제 행 번호와 정확히 같아야 합니다.이 경우에는 r1이 아니라 r36입니다.모든 r1을 r36으로 변경해주세요.제가 이 실수를 한 것을 양해해 주십시오.

언급URL : https://stackoverflow.com/questions/14155423/get-cell-by-a-cell-reference-letter-identifier-with-apache-poi

반응형