How do I read Excel file?

In this example we demonstrate how to read data from an Excel file. In this example we limit to read a string data only. After reading the data, iterating the each rows and cells of the Excel file we display the content to the program console.

package org.kodejava.example.poi;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ExcelReadExample {

    public static void main(String[] args) throws Exception {
        // An excel file name. You can create a file name with a full 
        // path information.
        String filename = "..\data.xls";

        // Create an ArrayList to store the data read from excel sheet.
        List sheetData = new ArrayList();

        FileInputStream fis = null;
        try {
            // Create a FileInputStream that will be use to read the 
            // excel file.
            fis = new FileInputStream(filename);

            // Create an excel workbook from the file system.
            HSSFWorkbook workbook = new HSSFWorkbook(fis);
            // Get the first sheet on the workbook.
            HSSFSheet sheet = workbook.getSheetAt(0);

            // When we have a sheet object in hand we can iterator on 
            // each sheet's rows and on each row's cells. We store the 
            // data read on an ArrayList so that we can printed the 
            // content of the excel to the console.
            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {
                HSSFRow row = (HSSFRow);
                Iterator cells = row.cellIterator();

                List data = new ArrayList();
                while (cells.hasNext()) {
                    HSSFCell cell = (HSSFCell);

        } catch (IOException e) {
        } finally {
            if (fis != null) {


    private static void showExcelData(List sheetData) {
        // Iterates the data and print it out to the console.
        for (int i = 0; i < sheetData.size(); i++) {
            List list = (List) sheetData.get(i);
            for (int j = 0; j < list.size(); j++) {
                HSSFCell cell = (HSSFCell) list.get(j);
                if (j < list.size() - 1) {
                    System.out.print(", ");

Our program above print out the following lines:

A, A, A, A, A, A, A, A, A, A
B, B, B, B, B, B, B, B, B, B
C, C, C, C, C, C, C, C, C, C
D, D, D, D, D, D, D, D, D, D
E, E, E, E, E, E, E, E, E, E
F, F, F, F, F, F, F, F, F, F
G, G, G, G, G, G, G, G, G, G
H, H, H, H, H, H, H, H, H, H
I, I, I, I, I, I, I, I, I, I
J, J, J, J, J, J, J, J, J, J

Wayan Saryada

A programmer, runner, recreational diver, currently living in the island of Bali, Indonesia. Mostly programming in Java, creating web based application with Spring Framework, JPA, etc. If you need help on Java programming you can hire me on Fiverr.

Leave a Reply