Open In App

How to Write Data from Excel File into a HashMap using Java and Apache POI?

Last Updated : 12 May, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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.

Output

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads