Apache POI с использованием XSSF и HSSF - PullRequest
7 голосов
/ 24 ноября 2010

У меня проблема с проектом Apache POI.

Мне не удалось использовать XSSF и HSSF в "Тот же класс Java" . Какую банку мне скачать или какой артефакт добавить в maven?

Я хочу обрабатывать файлы xls и xlsx одновременно. Когда я получаю ошибку версии Excel, я заменю XSSF на HSSF или HSSF на XSSF .

Как я могу это сделать?

Ответы [ 4 ]

12 голосов
/ 24 ноября 2010

Вместо этого попробуйте использовать новую версию Apache POI 3.7, в ней есть пакет SS, который обрабатывает как HSSF, так и XSSF, не беспокоясь о типе

Подробности здесь: http://poi.apache.org/spreadsheet/index.html

5 голосов
/ 15 августа 2012

Помимо «стандартного» пакетного решения SS, вы также можете просто использовать if statement для правильной загрузки нужного workbook format в Workbook interface объект, например:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF.
File file = new File("YourExcelFile.xlsx");
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) {
  workbook = new HSSFWorkbook(new FileInputStream(file));
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) {
  workbook = new XSSFWorkbook(new FileInputStream(file));
} else {
  throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}
0 голосов
/ 27 апреля 2018

Это сработало для меня:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);
0 голосов
/ 29 января 2018

Вместо этого используйте фабрику, которая обрабатывает xssf и hssf

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))
...