java - Request for resolving the error cannot convert from void to HSSFCell -
i trying read data excel file has formulas , writing data particular column of excel using below code, getting error message : cannot convert void hssfcell @ line 68.
@test public void samplecustnumformat() throws exception { string [] myxl = getexceldata(); //write data excel. //see has been read excel system.out.println (" before loop " + myxl[1]); (int i=0; i<xrows; i++){ system.out.println (" cust num " + myxl[i]); } fileoutputstream out = new fileoutputstream ("c:\\sce docs\\automation\\testexceldata.xls"); hssfworkbook mywb = new hssfworkbook(); hssfsheet sheet = mywb.getsheetat(0); (int k=1; k<=sheet.getlastrownum(); k++) { hssfcell cell = sheet.getrow(1).createcell(2).setcellvalue(myxl[k]); } mywb.write(out); out.close(); } public string [] getexceldata() throws exception{ string [] tabarray=null; fileinputstream fi = new fileinputstream("c:\\sce docs\\automation\\customeraccount_information.xls"); hssfworkbook mywb = new hssfworkbook(fi); hssfsheet mysheet = mywb.getsheetat(0); formulaevaluator evaluator = mywb.getcreationhelper().createformulaevaluator(); xrows = mysheet.getlastrownum()+1; tabarray = new string [xrows]; (int i=0;i<xrows;i++) { hssfrow row = mysheet.getrow(i); hssfcell cell = row.getcell(3); cellvalue cellvalue = evaluator.evaluate(cell); string value = evaluateformula(cellvalue); tabarray[i]=value; } return tabarray; } private string evaluateformula(cellvalue cellvalue) throws exception{ int type = cellvalue.getcelltype(); object result=null; switch (type) { case hssfcell.cell_type_boolean: result = cellvalue.getbooleanvalue(); break; case hssfcell.cell_type_numeric: result = cellvalue.getnumbervalue(); break; case hssfcell.cell_type_string: result = cellvalue.getstringvalue(); break; case hssfcell.cell_type_blank: break; case hssfcell.cell_type_error: break; // cell_type_formula never happen case hssfcell.cell_type_formula: break; } return result.tostring(); } }
these lines causing trouble:
for (int k=1; k<=sheet.getlastrownum(); k++) { hssfcell cell = sheet.getrow(1).createcell(2).setcellvalue(myxl[k]); }
here getting first row out of sheet, creating cell @ index 2 , setting cell value... , assigning of cell
! however, setcellvalue
returns void
(as seen in api). basically, need split lines 2 this:
for (int k=1; k<=sheet.getlastrownum(); k++) { hssfcell cell = sheet.getrow(1).createcell(2); cell.setcellvalue(myxl[k]); }
doing way, you'll first create cell , assign cell
. then, can set value.
edit: alternatively, can (as pointed out sankumarsingh) not assign value , in 1 line this:
for (int k=1; k<=sheet.getlastrownum(); k++) { sheet.getrow(1).createcell(2).setcellvalue(myxl[k]); }
Comments
Post a Comment