Apache POI, using both XSSF and HSSF
Solution 1
Instead of doing that, try using the new release of Apache POI 3.7, it has SS package which handles both HSSF and XSSF without worrying about type
Details here: http://poi.apache.org/spreadsheet/index.html
Solution 2
Aside from the "standard" SS package solution, you can also simply use an if statement
to correctly load the right workbook format
into an Workbook interface
object, like so:
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.");
}
Solution 3
Use the factory instead which handles both xssf and hssf
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
Workbook wb = WorkbookFactory.create(new File("file"))
Tim Tuckle
Updated on July 16, 2022Comments
-
Tim Tuckle almost 2 years
I have a problem with Apache POI project.
I failed to use
XSSF
andHSSF
in the "Same Java Class". Which jar should I download or which artifact should I get add into maven?I want to handle both
xls
andxlsx
files at the same time. When I get excel version error, I will change the XSSF to HSSF or HSSF to XSSF.How can I do this?
-
Tim Tuckle over 13 yearsFirst of all thanks for your help. I checked the page you've mentioned. Ok. I've added the code below in my pom.xml : <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-contrib</artifactId> <version>3.7-beta3</version> </dependency> However, in spite of that my Java class still cannot resolve XSSFWorkbook? There is no problem on HSSFWorkbook(); Workbook[] wbs = new Workbook[] { new HSSFWorkbook(), new XSSFWorkbook() };
-
rlovtang over 13 yearsXSSFWorkbook is in groupId: org.apache.poi, artifactId: poi-ooxml
-
Mariusz Ignatowicz almost 9 yearsAnd
IWorkbook
if using NPOI