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


121

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

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

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

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

어떤 아이디어 ??


저도 같은 문제를 얻고 있었다, xssf 어떤 이유로 내부 포장 가지고 있지 포이 - 3.whatever.jar 파일에 뿌리를두고있는 것 같다
씨 Redstoner을

답변:


197

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>

이것이 내가 필요한 것입니다. 나를 위해 (버전 3.11) 단순히 추가 jar : poit-ooxml-3.11-20141221.jar을 추가해야했습니다. 나는 그들 사이에 동점이 없다는 것을 깨닫지 못했습니다. 답변 Pushkar +1에 감사드립니다.
Clint L

32

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 구성 요소 페이지 에 설명 된대로 아티팩트에도 의존하고 싶을 것입니다 .


10

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

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

정말 도움이되었습니다
Abror Esonaliyev

8

Maven을 사용하는 경우 :

poi => artifactId의 poi-ooxml

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

3.12베타 대신 POI 3.12 최종 ( )을 사용하는 것이 좋습니다
Gagravarr

6

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

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

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

-하리 크리슈나 닐라


2

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();
}​

행을 가져 오지 않습니다 ... jar 파일 링크를 공유해 주시겠습니까?
demo

1

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

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

그래서 해결책은

poi-ooxml-3.17.jar

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


0

환경에 대해 설명하지 않으 셨습니다. 어쨌든 apache poi 라이브러리를 다운로드해야합니다. 이클립스를 사용하는 경우 루트 프로젝트를 마우스 오른쪽 버튼으로 클릭하면 속성과 Java 빌드 경로에서 외부 jar를 추가하고 프로젝트에서 해당 라이브러리를 가져옵니다.

xmlbeans-2.6.0; poi-ooxml-schemas- ...; poi-ooxml- ...; poi- ....;


0

구현을 위해 다음 파일이 필요했습니다.

  • poi-ooxml-schemas-3.14.20160307.jar
  • commons-codec-1.10.jar (아파치에서 가져온 zip 파일의 "lib"폴더에 있음)
  • curvesapi-1.03.jar ( "ooxml-lib"폴더에 있음)
  • poi-3.14-20160307.jar
  • poi-ooxml-3.14-20160307.jar
  • xmlbeans-2.6.0.jar ( "ooxml-lib"폴더에 있음)

(솔직히, 나는 그것들이 모두 필요한지 완전히 확신하지는 못하지만 ...) 그것들이 그렇게 포장되어 있기 때문에 약간 혼란 스럽습니다. 내 자신의 "lib"폴더에 수동으로 배치 한 다음 참조를 추가해야했습니다.

Maven은 항상 필요한 것보다 더 많이 다운로드하는 것처럼 보이므로 항상 libaries / dll과 같은 것들을 수동으로 배치합니다.


Apache POI 는 무엇에 필요한 항아리가 무엇인지 설명하는 편리한 페이지를 제공하며 필요한 모든 것이 바이너리 다운로드에 포함되어 있으므로 혼란 스럽거나 수수께끼 일 필요가 없습니다!
Gagravarr 2011 년

이 페이지는 Maven을 사용하려는 경우 편리하지만 수동으로 종속성을 추가하는 것을 선호합니다. 이 페이지는 모든 것을 개별적으로 나열하지 않습니다. 일부는 빌드시 눈에 띄지 않지만 런타임시 예외를 확인하여 찾을 수 있습니다. 내 구현은 XLS 및 XLSX 파일을 jtable로 가져옵니다. 위의 것들이 그것을 위해 필요한 모든 것 같았습니다.
pcalkins

1
여기에 나열된 모든 것은 바이너리 다운로드로 제공됩니다! 구성 요소의 필요성을 항아리, 어떤 것을 모두 항아리가 필요 종속성
Gagravarr

0

여러 가지를 시도한 후 실제로 효과가 있었던 것은 다음과 같습니다. 1. "poi"및 "poi-ooxml"을 수동으로 다운로드 2. 이러한 d / w jar를 "Maven Dependencies"에 추가

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.