how to read a specific row from the excel based some unique value in java using POI?
14,894
Suppose you want to fetch the employee whose eid = 1
, then you can put a check while you print it on console.
Since you dont know which row contains the eid=1 .So you have to parse each row.
The index of eid
is 2
as it seems from the output.
So following changes can be performed.
private void printToConsole(List cellDataList) {
for (int i = 0; i < cellDataList.size(); i++) {
List cellTempList = (List) cellDataList.get(i);
if((HSSFCell) cellTempList.get(2).toString().equals("1"))
{
for (int j = 0; j < cellTempList.size(); j++) {
HSSFCell hssfCell = (HSSFCell) cellTempList.get(j);
String stringCellValue = hssfCell.toString();
System.out.print(stringCellValue + "\t");
}
}
else {
i++;
}
System.out.println();
}
}
Author by
Joe
Updated on July 31, 2022Comments
-
Joe almost 2 years
i am trying to get the record based on some unique value.
Example; It there is a table of values with emp name, emp id, emp address, i want to fetch the record based on the emp id.
this the code i have tried also this code reads data from the file not from beginning.
package org.xlsx.read; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; 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 org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 015 * @author giftsam 016 */ public class ExcelSheetReader { /** * 021 * This method is used to read the data's from an excel file. 022 * @param * fileName - Name of the excel file. 023 */ private void readExcelFile(String fileName) { /** * Create a new instance for cellDataList */ List cellDataList = new ArrayList(); try { /** * 033 * Create a new instance for FileInputStream class 034 */ FileInputStream fileInputStream = new FileInputStream(fileName); /** * Create a new instance for POIFSFileSystem class */ POIFSFileSystem fsFileSystem = new POIFSFileSystem(fileInputStream); /* * 043 * Create a new instance for HSSFWorkBook Class 044 */ HSSFWorkbook workBook = new HSSFWorkbook(fsFileSystem); HSSFSheet hssfSheet = workBook.getSheetAt(0); /** * Iterate the rows and cells of the spreadsheet 050 * * to get * all the datas */ Iterator rowIterator = hssfSheet.rowIterator(); while (rowIterator.hasNext()) { HSSFRow hssfRow = (HSSFRow) rowIterator.next(); Iterator iterator = hssfRow.cellIterator(); List cellTempList = new ArrayList(); while (iterator.hasNext()) { HSSFCell hssfCell = (HSSFCell) iterator.next(); cellTempList.add(hssfCell); } cellDataList.add(cellTempList); } } catch (Exception e) { e.printStackTrace(); } /** * Call the printToConsole method to print the cell data in the console. */ printToConsole(cellDataList); } /** * This method is used to print the cell data to the console. * * @param cellDataList * - List of the data's in the spreadsheet. */ private void printToConsole(List cellDataList) { for (int i = 0; i < cellDataList.size(); i++) { List cellTempList = (List) cellDataList.get(i); for (int j = 0; j < cellTempList.size(); j++) { HSSFCell hssfCell = (HSSFCell) cellTempList.get(j); String stringCellValue = hssfCell.toString(); System.out.print(stringCellValue + "\t"); } System.out.println(); } } public static void main(String[] args) { String fileName = "D:/workspace/ReadExlsx/xlsx/Access_Control_Report_01-04-2012to30-04-2012.xls"; new ExcelSheetReader().readExcelFile(fileName); } }
this code prints out put like this.
292 Manikiruban Jaganathan 001 Esg 05/04/2012 09:11:28 19:06:06 292 Manikiruban Jaganathan 001 Esg 06/04/2012 09:01:07 19:02:37 292 Manikiruban Jaganathan 001 Esg 09/04/2012 09:02:08 19:39:29 292 Manikiruban Jaganathan 001 Esg 10/04/2012 09:13:20 18:54:05 292 Manikiruban Jaganathan 001 Esg 11/04/2012 09:31:55 18:33:03
my excel sheet looks like this :
Sling Media Pvt Ltd First and Last Record Details Report From 01/04/2012 to 30/04/2012 Report Prepared on: 10/05/2012 at 12:51 EmpID EmpName SiteCode Department Type Date First Last Location 1 Kr Veerappan 123 Hardware Team 02/04/2012 10:30:39 20:23:14 1 Kr Veerappan 123 Hardware Team 03/04/2012 09:46:01 19:58:16 1 Kr Veerappan 123 Hardware Team 04/04/2012 10:06:26 19:58:31 1 Kr Veerappan 123 Hardware Team 05/04/2012 11:38:51 19:32:17 1 Kr Veerappan 123 Hardware Team 06/04/2012 10:43:06 21:02:06 1 Kr Veerappan 123 Hardware Team 09/04/2012 11:02:32 22:05:14 1 Kr Veerappan 123 Hardware Team 10/04/2012 10:49:41 19:07:48 1 Kr Veerappan 123 Hardware Team 11/04/2012 10:16:42 20:30:13 1 Kr Veerappan 123 Hardware Team 12/04/2012 10:15:54 19:54:51 1 Kr Veerappan 123 Hardware Team 13/04/2012 10:18:30 19:05:55 1 Kr Veerappan 123 Hardware Team 18/04/2012 10:52:37 18:50:36 1 Kr Veerappan 123 Hardware Team 19/04/2012 10:24:59 20:29:59 1 Kr Veerappan 123 Hardware Team 20/04/2012 10:29:47 18:58:23 1 Kr Veerappan 123 Hardware Team 23/04/2012 10:24:31 20:11:29 1 Kr Veerappan 123 Hardware Team 24/04/2012 10:13:18 19:05:25
thanks Antony