[java] Apache POI에서 XSSF를 가져올 수 없습니다.

Apache POI 버전 3.7을 참조하고 있는데 다음을 수행 할 때 “cannot be resolved”오류가 발생합니다.

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

POI를 참조하는 기타 import 문 은 다음과 같은 오류를 제공 하지 않습니다 .

import org.apache.poi.ss.usermodel.*;

어떤 아이디어 ??



답변

OOXML이 작동하려면 POI jar와 별도로 패키지 된 POI-OOXML jar가 필요합니다.

다음 위치에서 POI-OOXML jar를 다운로드합니다.

http://repo1.maven.org/maven2/org/apache/poi/poi-ooxml/3.11/poi-ooxml-3.11.jar

Maven2의 경우 아래 종속성을 추가하십시오.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.11</version>
</dependency>


답변

OOXML 파일 형식 (예 : .xlsx의 경우 XSSF)에 대한 클래스는 다른 Jar 파일에 있습니다. 프로젝트에 대한 종속성과 함께 poi-ooxml jar를 포함해야합니다.

여기 에서 POI 웹 사이트 에서 모든 구성 요소 및 해당 종속성 목록을 얻을 수 있습니다 .

당신이하고 싶은 일은 3.11 바이너리 꾸러미를 다운로드하고 , 거기에서 poi-ooxmljar를 가져 오고, ooxml-lib디렉토리 의 의존성을 가져 오는 것 입니다. 이것을 프로젝트로 가져 오면 정렬됩니다.

또는 Maven을 사용하는 경우 여기 에서 의존하고 싶은 아티팩트 목록을 수 있지만 다음과 같으면 좋을 것입니다.

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.11</version>
</dependency>

poi-ooxml maven 종속성은 기본 POI jar와 종속성을 자동으로 가져옵니다. 스프레드 시트가 아닌 형식으로 작업 poi-scratchpad하려면 POI 구성 요소 페이지 에 설명 된대로 아티팩트에도 의존하고 싶을 것입니다 .


답변

아래 내용을 “build.gradle”앱에 추가했습니다.

implementation 'org.apache.poi:poi:4.0.0'
implementation 'org.apache.poi:poi-ooxml:4.0.0'


답변

Maven을 사용하는 경우 :

poi => artifactId의 poi-ooxml

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.12</version>
    </dependency>


답변

문제점 : “org.apache.poi.xssf.usermodel.XSSFWorkbook”클래스를 가져 오는 동안 eclipse에서 오류가 표시됩니다.

솔루션 :이 maven 종속성을 사용하여이 문제를 해결하십시오.

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.15</version>
</dependency>

-하리 크리슈나 닐라


답변

1) POI 폴더에서 모든 JARS 가져 오기 2) POI 폴더의 하위 디렉토리 인 ooxml 폴더에서 모든 JARS 가져 오기 3) POI 폴더의 하위 디렉토리 인 lib 폴더에서 모든 JARS 가져 오기

String fileName = "C:/File raw.xlsx";
File file = new File(fileName);
FileInputStream fileInputStream;
Workbook workbook = null;
Sheet sheet;
Iterator<Row> rowIterator;
try {
        fileInputStream = new FileInputStream(file);
        String fileExtension = fileName.substring(fileName.indexOf("."));
        System.out.println(fileExtension);
        if(fileExtension.equals(".xls")){
        workbook  = new HSSFWorkbook(new POIFSFileSystem(fileInputStream));
        }
        else if(fileExtension.equals(".xlsx")){
        workbook  = new XSSFWorkbook(fileInputStream);
        }
        else {
        System.out.println("Wrong File Type");
        }
        FormulaEvaluator evaluator workbook.getCreationHelper().createFormulaEvaluator();
        sheet = workbook.getSheetAt(0);
        rowIterator = sheet.iterator();
        while(rowIterator.hasNext()){
        Row row = rowIterator.next();
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()){
        Cell cell = cellIterator.next();
        //Check the cell type after evaluating formulae
       //If it is formula cell, it will be evaluated otherwise no change will happen
        switch (evaluator.evaluateInCell(cell).getCellType()){
        case Cell.CELL_TYPE_NUMERIC:
        System.out.print(cell.getNumericCellValue() + " ");
        break;
        case Cell.CELL_TYPE_STRING:
        System.out.print(cell.getStringCellValue() + " ");
        break;
        case Cell.CELL_TYPE_FORMULA:
        Not again
        break;
        case Cell.CELL_TYPE_BLANK:
        break;
        }
}
 System.out.println("\n");
}
//System.out.println(sheet);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}​


답변

나는 같은 문제가 있었기 때문에 poi-3.17.jar 파일을 파헤 쳤고 내부에 xssf 패키지가 없었습니다.

그런 다음 다른 파일을 살펴보고 poi-ooxml-3.17.jar에서 xssf int를 찾았습니다.

그래서 해결책은

poi-ooxml-3.17.jar

당신의 프로젝트에, 그것이 작동하는 것처럼 보이기 때문에 (적어도 나를 위해)