How to Read Excel file using Java

Normally, to read a data in excel, first we should have access to workbook, sheet which we want to read as workbook contains multiple sheets and if you want to read a particular cell we need location of a Cell.

In this article, we will discuss how to access workbook, sheet and a Cell using Jxl library Download jxl jar and add it to build path.

You can also consider usingApache Poi Library to perform read and write operations with excel sheets because of its better documentation, more features, active development, and Excel 2007+ format support.

As we know JXL doesn't support Excel 2007 ".xlsx" file format. It only supports the old BIFF (binary) ".xls" format. Where as Apache POI supports both Excel 2003 - xls and Excel 2007 - xlsx file formats.

To start with gaining access to Workbook, we should always remember the below command:

String FilePath = "d://filepath.xls";
FileInputStream fs = new FileInputStream(FilePath);
Workbook wb = Workbook.getWorkbook(fs);

Or You can also directly send the file as below

Workbook wb = Workbook.getWorkbook(new File("samplefile.xls"));

Now to get the access to the particular sheet, we should use the below command:

Sheet sh = wb.getSheet(0); // this is to get the access to Sheet1. 

If you want to get the access to sheet2, you should specify as below:

Sheet sh = wb.getSheet(1);

You can also get the sheet access by sheet name, you should specify as below:

Sheet sh = wb.getSheet("sheet1");

Now we will get the content in particular location, which will return contents as a string

String CellGetContent = sh.getCell(0,0).getContents();
System.out.println(CellGetContent);

We can also write it as :

System.out.println(sh.getCell(0,0).getContents());

There is an other style to get the cell contents as below:

Cell Row0Col0 = sheet.getCell(0,0);
Cell Row1Col1 = sheet.getCell(1,1);
String FirstRowFirstColumn = Row0Col0.getContents();
String SecondRowSecondColumn = Row1Col1.getcontents();

The below is the input sheet for the example program:

excel sheet

Please find the below code in which we will read a data from excel sheet and print using for loop

package com.pack;

import java.io.FileInputStream;
import java.io.IOException;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ReadExcelFile {
	
	public void readExcel() throws BiffException, IOException {
		String FilePath = "D:\\sampledoc.xls";
		FileInputStream fs = new FileInputStream(FilePath);
		Workbook wb = Workbook.getWorkbook(fs);

		// TO get the access to the sheet
		Sheet sh = wb.getSheet("Sheet1");

		// To get the number of rows present in sheet
		int totalNoOfRows = sh.getRows();

		// To get the number of columns present in sheet
		int totalNoOfCols = sh.getColumns();

		for (int row = 0; row < totalNoOfRows; row++) {

			for (int col = 0; col < totalNoOfCols; col++) {
				System.out.print(sh.getCell(col, row).getContents() + "\t");
			}
			System.out.println();
		}
	}

	public static void main(String args[]) throws BiffException, IOException {
		ReadExcelFile DT = new ReadExcelFile();
		DT.readExcel();
	}
}

The output of the below program is:

Username password
testuser1 testpassword1
testuser2 testpassword2
testuser3 testpassword3
testuser4 testpassword4

Here the most significant difference between JXL and Apache POI is, JXL does not support the ".xlsx" format (Excel 2007 and +) , it just supports the old ".xls" format. Where as Apache POI supports both XLS and XLSX formats.
And JXL API was last updated in 2009 BUT Apache POI is actively maintained.

Hope the above code works. Please let me know if you face any problems. Thank you.

Excel API: 

Comments

explained well

Easy to understand and code works fine.

Really helpful ,keep posting ...

This is the best explanation to read Excel file using JXL API!
But you should post "How to Read Excel file using Java" with the help of Apache POI as it is most popular library and still is in active development.
Waiting for the same article with the help of Apache POI.

Thanks, it helped! The problem solved.

Hi the way you have explained is really good ...I have one doubt i want to read data from Xlsx file in one static class i would like to reuse it when ever i want by passing parameters can you give any suggesion for that.

Very easy and good explain

hai,
Warning: Cannot read name ranges for Print_Area - setting to empty
Warning: Cannot read name ranges for _FilterDatabase - setting to empty
Exception in thread "main" java.lang.NullPointerException
at ReadExcelFile.readExcel(ReadExcelFile.java:17)
at ReadExcelFile.main(ReadExcelFile.java:34)

pleasse give solution

not working in netbeans

Thanks for this,

Add new comment