반응형
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
반응형
'it-source' 카테고리의 다른 글
C# 평행.각 풀에서 너무 많은 연결을 여는 경우 (0) | 2023.06.15 |
---|---|
실패: 'DynamicTestModule' 모듈에서 예기치 않은 지시문 'ContactDetailsComponent'를 가져왔습니다.@NgModule 주석을 추가하십시오. (0) | 2023.06.15 |
잘못된 http_host 헤더 (0) | 2023.06.15 |
레일 직렬화를 사용하여 해시를 데이터베이스에 저장 (0) | 2023.06.15 |
fgetpos/fsetpos와 ftell/fseeek의 차이점 (0) | 2023.06.15 |