I want to read a excel sheet based on column name in java.
I want to get column values correponding to column name like get TXT_Policy_no in policy no string etc.
as the excel sheet values can be suffled i want to read values based on column names to be on safer side.

I want to get column values correponding to column name like get TXT_Policy_no in policy no string etc. as the excel sheet values can be suffled i want to read values based on column names to be on safer side.
My java Code:
for (int i = 0; i < listofexcel.length; i++)
{
if (listofexcel[i].isFile())
{
//System.out.println("File " + listOfCsv[i].getName());
Csv_list.add(listofexcel[i].getName());
} else if (listofexcel[i].isDirectory())
{
System.out.println("Directory " + listofexcel[i].getName());
}
}
Iterator itr = Csv_list.iterator();
while(itr.hasNext())
{
String CsvName = (String) itr.next();
System.out.println(CsvName);
ProcessMain worker = new ProcessMain(CsvName);
// Runnable worker = new UploadFiles(CsvName);
// System.out.println("^^^^^^^");
String csvpath= GlobalVariable.getCsv_path()+CsvName;
WFLogger.printOut(csvpath);
first(csvpath);
final File f2 = new File(csvpath);
if(f2.exists())
{
f2.delete();
}
//executor.execute(worker);
}
}
catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//Returns the Headings used inside the excel sheet
public void getHeadingFromXlsFile(Sheet sheet) {
int columnCount = sheet.getColumns();
for (int i = 0; i < columnCount; i++) {
System.out.println(sheet.getCell(i, 0).getContents());
}
}
private void first(String csvName) {
// TODO Auto-generated method stub
FileInputStream fs = null;
try {
fs = new FileInputStream(new File(csvName));
contentReading(fs);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void contentReading(FileInputStream fs) throws ClassNotFoundException, BiffException {
// TODO Auto-generated method stub
WorkbookSettings ws = null;
Workbook workbook = null;
Sheet s = null;
jxl.Cell[] rowData=null;
int rowCount = '0';
int columnCount = '0';
DateCell dc = null;
int totalSheet = 0;
ws = new WorkbookSettings();
ws.setLocale(new Locale("en", "EN"));
workbook = Workbook.getWorkbook(fs, ws);
totalSheet = workbook.getNumberOfSheets();
if(totalSheet > 0) {
System.out.println("Total Sheet Found:" + totalSheet);
String sheetName="";
for(int jj=0;jj<totalSheet ;jj++) {
sheetName=workbook.getSheet(jj).getName();
System.out.println("Sheet Name:" + sheetName);
s = workbook.getSheet(jj);
//Reading Individual Cell
//getHeadingFromXlsFile(s);
System.out.println("Total Rows inside Sheet:" + s.getRows());
rowCount = s.getRows();
System.out.println("Total Column inside Sheet:" + s.getColumns());
columnCount = s.getColumns();
//Reading Individual Row Content
for (int i = 1; i < rowCount; i++) {
//Get Individual Row
rowData = s.getRow(i);
if (rowData[0].getContents().length() != 0) {
int j=0;
String Claimno="";
String Product="";
String Mobileno="";
String Omniflag="N";
String Policyno="";
String Customername="";
String Certno="";
String Department="";
String lossdate="";
String Srno="";
for ( j = 0; j < columnCount; j++) {
try{
switch (j) {
case 0:
Srno= rowData[j].getContents();
break;
case 1:
Policyno=rowData[j].getContents();
break;
case 2:
Certno=rowData[j].getContents();
break;
case 3:
lossdate= rowData[j].getContents();
break;
case 4:
Department=rowData[j].getContents();
break;
case 5:
Product=rowData[j].getContents();
break;
case 6:
Claimno= rowData[j].getContents();
break;
case 7:
Customername=rowData[j].getContents();
break;
default:
break;
}
}catch (Exception e) {
System.out.print(e);
}
}
I assume that we know what row contains headers. Then we can iterate through it's cells and check their values to gather information about columns. Like
After map is filled, you can access cells like