it-source

Apache POI를 사용하여 Excel 파일에서 열을 가져오는 방법은 무엇입니까?

criticalcode 2023. 6. 15. 21:56
반응형

Apache POI를 사용하여 Excel 파일에서 열을 가져오는 방법은 무엇입니까?

통계 분석을 하기 위해서는 엑셀 시트의 열에서 값을 추출해야 합니다.Apache POI 패키지를 사용하여 Excel 파일을 읽어 왔으며 행 위에서 반복해야 할 경우에도 잘 작동합니다.하지만 API(링크 텍스트)나 구글 검색을 통해 열을 얻는 것에 대해 아무것도 찾을 수 없었습니다.

다른 열의 최대값과 최소값을 가져와 이 값을 사용하여 난수를 생성해야 하므로 개별 열을 선택하지 않고 행과 열을 반복하여 값을 얻고 하나씩 비교하는 것이 시간 효율적으로 들리지 않습니다.

이 문제를 어떻게 해결할 것인지에 대한 아이디어가 있습니까?

감사해요.

Excel 파일은 열 기반이 아닌 행 기반이므로 열에 있는 모든 값을 가져오는 유일한 방법은 각 행을 차례로 살펴보는 것입니다.열에 있는 셀이 함께 저장되지 않기 때문에 열에 더 빨리 도달할 수 있는 방법은 없습니다.

코드는 다음과 같습니다.

List<Double> values = new ArrayList<Double>();
for(Row r : sheet) {
   Cell c = r.getCell(columnNumber);
   if(c != null) {
      if(c.getCellType() == Cell.CELL_TYPE_NUMERIC) {
         valuesadd(c.getNumericCellValue());
      } else if(c.getCellType() == Cell.CELL_TYPE_FORMULA && c.getCachedFormulaResultType() == Cell.CELL_TYPE_NUMERIC) {
         valuesadd(c.getNumericCellValue());
      }
   }
}

그러면 해당 열의 모든 숫자 셀 값이 표시됩니다.

파일에 헤더가 있고 열 인덱스가 확실하지 않지만 특정 헤더(열 이름) 아래에서 열을 선택하려는 경우 추가하려고 합니다. 예를 들어, 다음과 같은 방법을 사용할 수 있습니다.

    for(Row r : datatypeSheet) 
            {
                Iterator<Cell> headerIterator = r.cellIterator();
                Cell header = null;
                // table header row
                if(r.getRowNum() == 0)
                {
                    //  getting specific column's index

                    while(headerIterator.hasNext())
                    {
                        header = headerIterator.next();
                        if(header.getStringCellValue().equalsIgnoreCase("column1Index"))
                        {
                            column1Index = header.getColumnIndex();
                        }
                    }
                }
                else
                {
                    Cell column1Cells = r.getCell(column1);

                    if(column1Cells != null) 
                    {
                        if(column1Cells.getCellType() == Cell.CELL_TYPE_NUMERIC) 
                        {
// adding to a list
                            column1Data.add(column1Cells.getNumericCellValue());
                        }
                        else if(column1Cells.getCellType() == Cell.CELL_TYPE_FORMULA && column1Cells.getCachedFormulaResultType() == Cell.CELL_TYPE_NUMERIC) 
                        {
// adding to a list
                            column1Data.add(column1Cells.getNumericCellValue());
                        }
                    }

                }    
            }

언급URL : https://stackoverflow.com/questions/2922692/how-to-get-columns-from-excel-files-using-apache-poi

반응형