java - not able to parse string into date using jexcel api -
i faced problem faced few days ago. have parse file , convert string date. had done same csv file few days ago. however, new file giving error: java.text.parseexception: unparseable date: ""3/4/2011""
why string getting printed 2 "" around it? think root cause of problem. posting code below . please note same code works file date printed 3/4/2011 no "" around it.
writableworkbook wbwrite=null; writablesheet sheet=null; label lwrite=null; bufferedreader br=null; number n=null; string strfile="quotes.csv"; string strline = ""; string st[]; string delimiter="[,]"; int linenumber = 0, tokennumber = 0; int length=0; int counter=0; calendar cal = calendar.getinstance(); datetime datecell=null; if(strfile.equals("quotes.csv")) { system.out.print("in loop if"); try { file file=new file("quotes.xls"); wbwrite=workbook.createworkbook(file); system.out.print("file created"); //path=file.getcanonicalpath(); sheet = wbwrite.createsheet("sheet 1", 0); lwrite=null; n=null; date dtest=null; dateformat df=null; date dadd=null; df=new simpledateformat("dd-mm-yy"); //create bufferedreader read csv file br = new bufferedreader( new filereader(strfile)); strline = ""; //st[]=empty; delimiter="[,]"; linenumber = 0; tokennumber = 0; length=0; //read comma separated file line line while( (strline = br.readline()) != null) { //system.out.print("strline="+strline); //break comma separated line using "," st=strline.split(delimiter); length=0; while(length<st.length) { //display csv values // system.out.println("line # " + linenumber + ", token # " + tokennumber + ", token : "+ st[length]); if(tokennumber==2) { system.out.print("date="+st[length]); dateformat formatter = new simpledateformat("dd-mm-yyyy"); date date = (date)formatter.parse(st[length]); system.out.print("date="+date); cal.settime(date); cal.set(calendar.hour_of_day, 17); cal.set(calendar.minute, 30); cal.set(calendar.second, 0); cal.set(calendar.millisecond, 0); date = cal.gettime(); system.out.print("date="+date); datecell=new datetime(tokennumber,linenumber,date); sheet.addcell(datecell); lwrite=new label(tokennumber,linenumber,st[length]); sheet.addcell(lwrite); } if(tokennumber==1||tokennumber==5||tokennumber==6||tokennumber==7) { n=new number(tokennumber,linenumber,float.parsefloat(st[length])); sheet.addcell(n); } tokennumber++; length++; } //reset token number //tokennumber = 0; } wbwrite.write(); wbwrite.close(); } catch(exception e) { system.out.print("error="+e); } } }
i solved it. string had leading , trailing quotes led double quotes when parsed. that's why ""3/4/2011"". added
if (st[length].startswith("\"")) { st[length] = st[length].substring(1, st[length].length()); } if (st[length].endswith("\"")) { st[length] = st[length].substring(0, st[length].length() - 1); }
plus date format dd-mm-yyyy ; changed dd/mm/yyyy. getting correct answer.
Comments
Post a Comment