При попытке вызвать createWorkbook на фабрике org. apache .poi.xssf.usermodel.XSSFWorkbookFactory и аргументы - PullRequest
0 голосов
/ 14 января 2020

Я испробовал так много решений, но все они не сработают для меня, поэтому я хочу получить от вас помощь, ребята, пожалуйста.

Код ошибки:

PS C:\Users\Sonic\Desktop\excel_reader_v.1_beta3-0> cd 'c:\Users\Sonic\Desktop\excel_reader_v.1_beta3-0'; & 'C:\Users\Sonic\.vscode\extensions\vscjava.vscode-java-debug-0.24.0\scripts\launcher.bat' 'C:\Users\Sonic\AppData\Local\Programs\AdoptOpenJDK\bin\java' '-Dfile.encoding=UTF-8' 
'-cp' 'C:\Users\Sonic\AppData\Local\Temp\cp_8ljdlon05x6nh0xy6agu8fwea.jar' 'excel_reader.ExcelReader2d' 
Exception in thread "main" java.io.IOException: While trying to invoke 'createWorkbook' on factory org.apache.poi.xssf.usermodel.XSSFWorkbookFactory and arguments [java.io.BufferedInputStream@452b3a41]
        at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:357)
        at org.apache.poi.ss.usermodel.WorkbookFactory.createXSSFWorkbook(WorkbookFactory.java:316)
        at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:234)
        at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:200)
        at excel_reader.ExcelReader2d.main(ExcelReader2d.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbookFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:326)
        ... 4 more

Мой код:

package excel_reader;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ExcelReader2d {

    // methods void ExeScan()
    public  static void main(String [] args) throws FileNotFoundException, IOException {
        String filePath = "C:\\Users\\Sonic\\Desktop\\ExcelReadingProject\\ExcelWorkbook.xlsx";

        String toSearch = "coresystem";
        int searchColumn = 7; // column H
        List<Row> results = new ArrayList<Row>();

        DataFormatter dataFormatter = new DataFormatter();
        Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath));
        FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator(); 
        Sheet sheet = workbook.getSheetAt(0);

        for (Row row : sheet) { // iterate over all rows in the sheet
            Cell cellInSearchColumn = row.getCell(searchColumn); // get the cell in seach column (H)
            if (cellInSearchColumn != null) { // if that cell is present
                String cellValue = dataFormatter.formatCellValue(cellInSearchColumn, formulaEvaluator); // get string cell value
                if (toSearch.equalsIgnoreCase(cellValue)) { // if cell value equals the searched value
                    results.add(row); // add that row to the results
                }
            }
        }

        // print the results
        System.out.println("Found results:");
        for (Row row : results) {
            int rowNumber = row.getRowNum()+1;
            System.out.print("Row " + rowNumber + ":\t");
            for (Cell cell : row) {
                String cellValue = dataFormatter.formatCellValue(cell, formulaEvaluator);
               System.out.print(cellValue + "\t");
            }
            System.out.println();
        }

        workbook.close();
    }
}

Что я пробовал: переустановите .jar файлы, убедитесь, что то, что находится в файле зависимостей, правильно, проверьте мои коды (без красных линий). * Пс. У меня всего 4 месяца опыта работы с java, я не знал, как работает внедрение зависимостей и как правильно добавить файл зависимостей (.pom.xml), учебник, который я смотрел, он научил меня ставить файл pom.xml и находить код зависимости онлайн (https://mvnrepository.com/artifact/org.apache.poi), в настоящее время используется Windows 10, vscode. Tkx.

1 Ответ

1 голос
/ 14 января 2020

добавить к вам пом. xml следующую зависимость:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...