Apache POI में XSSF आयात नहीं कर सकता


121

मैं अपाचे POI के संस्करण ३. of का संदर्भ दे रहा हूं और जब मैं करता हूं तो मुझे "हल नहीं किया जा सकता" त्रुटि हो रही है:

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

अन्य आयात कथन जो POI को संदर्भित करते हैं, मुझे त्रुटियाँ नहीं देते हैं, जैसे:

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

कोई विचार??


मैं एक ही समस्या हो रही थी, यह poi-3.whatever.jar फ़ाइल में निहित करने के लिए नहीं होने xssf किसी कारण से अंदर पैक लगता है
श्री Redstoner

जवाबों:


197

OOXML के लिए काम करने के लिए आपको POI-OOXML जार की आवश्यकता होती है जिसे POI जार से अलग से पैक किया जाता है।

POI-OOXML जार को निम्न स्थान से डाउनलोड करें -

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) मुझे बस एक अतिरिक्त जार जोड़ने की जरूरत थी: कविता-ओक्सिलमी-3.11-20141221 ।जर। मुझे महसूस नहीं हुआ कि उनके बीच कोई टाई नहीं है। जवाब पुष्कर +1 के लिए धन्यवाद।
क्लिंट एल

32

OOXML फ़ाइल स्वरूपों के लिए कक्षाएं (जैसे .xlsx के लिए XSSF) एक अलग जार फ़ाइल में हैं। आपको अपनी परियोजना में पोई-ओक्सिलम जार को शामिल करने की आवश्यकता है, इसके लिए निर्भरता के साथ

आप POI वेबसाइट पर सभी घटकों और उनकी निर्भरता की सूची प्राप्त कर सकते हैं

जो आप शायद करना चाहते हैं वह 3.11 बाइनरी पैकेज डाउनलोड करना है , poi-ooxmlइसमें से जार और ooxml-libनिर्देशिका में निर्भरताएं पकड़ो । अपने प्रोजेक्ट में इनका आयात करें और आपको क्रमबद्ध किया जाएगा।

वैकल्पिक रूप से, यदि आप मावेन का उपयोग करते हैं, तो आप उन कलाकृतियों की सूची के लिए यहां देख सकते हैं , जिन पर आप निर्भर रहना चाहते हैं, लेकिन यह कुछ ऐसा बनना चाहेगा:

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

Poi-ooxml मावेन निर्भरता मुख्य POI जार और आप के लिए निर्भरता में स्वचालित रूप से खींच लेगी। यदि आप गैर-स्प्रेडशीट प्रारूपों के साथ काम करना चाहते हैं, तो आप POI के घटक पृष्ठpoi-scratchpad पर भी विस्तृत रूप से कलाकृतियों पर निर्भर रहना चाहते हैं।


10

मैंने एप्लिकेशन "build.gradle" में सामग्री को नीचे जोड़ा

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

यह वास्तव में मदद की है
अब्राहम Esonaliyev

8

यदि आप मावेन का उपयोग करते हैं:

poi => poi-ooxml in विरूपण साक्ष्य

    <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" वर्ग का आयात करना।

समाधान: इस समस्या को हल करने के लिए इस मावेन निर्भरता का उपयोग करें:

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

-हरि कृष्ण नीला


2

1) POI फ़ोल्डर से सभी JARS को आयात किया गया 2) ooxml फ़ोल्डर से सभी JARS आयात किया गया जो POI फ़ोल्डर 3 का एक उपनिर्देशिका है) सभी JARS को उन वित्तीय फ़ोल्डर से आयात किया गया जो POI फ़ोल्डर का उपनिर्देशिका है

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

पंक्ति आयात नहीं हो रही है ... क्या आप जार फ़ाइल लिंक को साझा कर सकते हैं
डेमो

1

मुझे भी यही समस्या थी, इसलिए मैंने poi-3.17.jar फ़ाइल खोदी और अंदर कोई xssf पैकेज नहीं था।

मैं फिर अन्य फाइलों के माध्यम से चला गया और xssf int poi-ooxml-3.17.jar पाया

तो ऐसा लगता है कि समाधान जोड़ना है

poi-ooxml-3.17.jar

आपकी परियोजना के लिए, जैसा कि यह काम करने के लिए लगता है (मेरे लिए कम से कम)


0

आपने पर्यावरण का वर्णन नहीं किया, वैसे भी, आपको अपाचे पोई लाइब्रेरी डाउनलोड करनी चाहिए। यदि आप ग्रहण का उपयोग कर रहे हैं, तो अपनी रूट परियोजना पर राइट क्लिक करें, इसलिए गुण और जावा बिल्ड पथ में बाहरी जार जोड़ें और अपनी परियोजना में उन पुस्तकालयों में आयात करें:

xmlbeans-2.6.0; poi-ooxml-schemas- ...; poi-ooxml- ...; पोई - ....;


0

मुझे अपने कार्यान्वयन के लिए निम्न फ़ाइलों की आवश्यकता थी:

  • poi-OOXML- स्कीमा-3.14.20160307.jar
  • कॉमन्स-कोडेक-१.१०.जर (यह अपाचे से आपको मिलने वाली ज़िप फ़ाइल के "काम" फ़ोल्डर में था)
  • curvesapi-1.03.jar ("ओक्सिलम-लीब" फ़ोल्डर में)
  • poi-3.14-20160307.jar
  • poi-OOXML- 3.14-20160307.jar
  • xmlbeans-2.6.0.jar ("ऑक्सिल-लिब" फ़ोल्डर में)

(हालांकि ईमानदारी से, मुझे पूरी तरह से यकीन नहीं है कि वे सभी आवश्यक हैं ...) यह थोड़ा भ्रमित है क्योंकि वे इस तरह से पैक किए जाते हैं। मुझे उन्हें अपने "लिब" फ़ोल्डर में मैन्युअल रूप से रखने की आवश्यकता थी और फिर संदर्भ जोड़ें ...

मावेन हमेशा मुझे जरूरत से ज्यादा डाउनलोड करने लगता है, इसलिए मैं हमेशा लिबरी / डीएलएस और चीजों को मैन्युअल रूप से रखता हूं।


Apache POI यह बताने के लिए कि जार की क्या आवश्यकता है , और बाइनरी डाउनलोड में जो कुछ भी आता है, वह यह बताने के लिए एक उपयोगी पृष्ठ प्रदान करता है , इसलिए इसे भ्रमित या रहस्य नहीं होना चाहिए!
गाग्रवेर

यदि आप मावेन का उपयोग करने जा रहे हैं तो यह पृष्ठ आसान है, लेकिन मैं मैन्युअल रूप से निर्भरता जोड़ना पसंद करता हूं। पेज सब कुछ अलग से सूचीबद्ध नहीं करता है। बिल्ड समय में उनमें से कुछ ध्यान देने योग्य नहीं हैं, लेकिन आप उन्हें रन-टाइम पर अपवादों की जाँच करके पाएंगे। मेरे कार्यान्वयन से एक्स्टस में XLS और XLSX फाइलें आयात हो जाती हैं। ऊपर से वह सब लग रहा था जो उसके लिए जरूरी था।
पीसीक्लिंस

1
बाइनरी डाउनलोड में सब कुछ सूचीबद्ध है! दोनों जार को किन घटकों की आवश्यकता होती है, और जार को किन निर्भरताओं की आवश्यकता होती है
गाग्रावि

0

कई चीजों की कोशिश करने के बाद, वास्तव में जो काम किया गया था: 1. "पोई" और "पोई-ओक्सॉल्म" को मैन्युअल रूप से डाउनलोड करना 2. इन डी / डब्ल्यू जार को "मावेन डिपेंडेंसी" में जोड़ना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.