Apache POI is an open-source java library to create and manipulate various file formats based on Microsoft Office. Using POI, one should be able to perform create, modify and display/read operations on the following file formats. For Example, Java doesn’t provide built-in support for working with excel files, so we need to look for open-source APIs for the job. In this article, we are going to discuss how to write the data from an Excel file into a HashMap in java using Apache POI. HashMap is a type of collection in Java that contains a key-value pair for storing the data. Apache POI is an open-source Java library for manipulating Microsoft documents like Excel, word, etc.
Pre-Requisite
To work with this example, we need the following:
- Java installed in your system, for installing java check this article.
- Also Install the Eclipse IDE for Java Developers here.
- After that, create a Maven Project
For creating a Maven project refer to this How to Create a Selenium Maven Project with Eclipse to Open Chrome Browser?
- Add the dependency for Apache POI and Apache-ooxml in the POM.xml file
- Go to the MVN repository https://mvnrepository.com/.
- Search for the Apache POI
- Copy and paste these dependencies into the pom.xml then save it.
Let’s discuss this with an example, now create an Excel file with some data on it, we have to read the data from this file and write it into the HashMap. Let’s see this Example with hands-on coding.
Program for writing Data from Excel file into a HashMap
Java
package GFG_Maven.GFG_MAven; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.testng.annotations.Test; public class Geeks { @Test public void geekforgeeks() throws IOException { FileInputStream file = new FileInputStream( "C:\\Users\\ADMIN\\Desktop\\data.xlsx" ); XSSFWorkbook wb = new XSSFWorkbook(file); XSSFSheet sh = wb.getSheet( "Sheet1" ); HashMap<Integer, String> map = new HashMap<Integer, String>(); for ( int r = 0 ; r <= sh.getLastRowNum(); r++) { int key = ( int )sh.getRow(r) .getCell( 0 ) .getNumericCellValue(); String value = sh.getRow(r) .getCell( 1 ) .getStringCellValue(); map.put(key, value); } // Displaying HashMap Iterator<Entry<Integer, String> > new_Iterator = map.entrySet().iterator(); while (new_Iterator.hasNext()) { Map.Entry<Integer, String> new_Map = (Map.Entry<Integer, String>) new_Iterator.next(); System.out.println(new_Map.getKey() + "|" + new_Map.getValue()); } wb.close(); file.close(); } } |
Code Explanation
- Open the file in the input stream.
- Create the workbook and get the sheet for that Excel.
- Declare the HashMap for storing the data from Excel.
- Iterate through the Rows to get the Key and value data.
- Add the data into the HashMap using the put method.
- For displaying HashMap iterate through the map and print the output.
Output
After executing the above code we will get all the data in the Excel stored in HashMap and it is printed.