reading excel file --> xlsx format with java
Apache POI is a good librairy to read xsl and xslx format.
To read a file just instanciate a new XSSFWorkbook
by passing a new FileInputStream with the path of the Excel file:
XSSFWorkbook workbook = new XSSFWorkbook(OPCPackage.open(new File("foo.xslx")));
Or with an input stream (takes a little more memory than a file):
XSSFWorkbook workbook = new XSSFWorkbook(myInputStream);
After having a XSSFWorkbook
, use it to iterate through all the cell (example).
Download Apache POI 3.9 here
Using POI 3.8 and poi-ooxml-3.8, I've had success with something like this (i've not tried older versions):
InputStream is = //Open file, and get inputstreamWorkbook workBook = WorkbookFactory.create(is);int totalSheets = workBook.getNumberOfSheets();for (int i = 0; i <= totalSheets - 1; i++) { Sheet sheet = workBook.getSheetAt(i); // Do something with the sheet}
WorkbookFactory
will automatically determine whether the file is the old XLS, or newer XLSX and return the correct version of Workbook
. The rest of the code is just a sample of iterating through the sheets contained within.
Add following dependencies in your code.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
Also to read excel file use the following code, it will work for both .xls as well as .xlsx file.
Workbook workbook = WorkbookFactory.create(inputStream);