Apache POI, использующий как XSSF, так и HSSF
У меня проблема с проектом Apache POI.
Я не смог использовать XSSF
а также HSSF
в "Тот же класс Java". Какую банку я должен скачать или какой артефакт я должен добавить в Maven?
Я хочу справиться с обоими xls
а также xlsx
файлы одновременно. Когда я получаю ошибку версии Excel, я заменю XSSF на HSSF или HSSF на XSSF.
Как я могу это сделать?
4 ответа
Вместо этого попробуйте использовать новую версию Apache POI 3.7, в ней есть пакет SS, который обрабатывает как HSSF, так и XSSF, не беспокоясь о типе.
Подробности здесь: http://poi.apache.org/spreadsheet/index.html
Помимо "стандартного" пакетного решения 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.");
}
Вместо этого используйте фабрику, которая обрабатывает как xssf, так и hssf
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
Workbook wb = WorkbookFactory.create(new File("file"))
Это сработало для меня:
filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
String extension = FilenameUtils.getExtension(filePath);
System.out.println(extension);