2013-11-29 169 views
0

當我嘗試從excel文件導入數據時出現錯誤(無法解析日期:「18-11-2003」)。從該文件的日期不能被解析無法從excel文件導入數據

 if(row.getCell(16)!=null){ 
     String dobb=null; 
     Date dob=null;        
     row.getCell(16).setCellType(row.getCell(16).CELL_TYPE_STRING); 

     dobb=row.getCell(16).getStringCellValue(); 
     System.out.println(dobb); 

     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
    try { 
     dob = (Date)simpleDateFormat.parse(dobb);//error..... Unparseable date: "18–11–2003" 
     System.out.println("dateeee"+dob); 

    } catch (ParseException e) { 
     e.printStackTrace(); 
       //dob=new Date(); 
} 
+0

日期格式u能粘貼控制檯日誌.Areü確保從Excel中傳來的日期爲dd-MM-yyyy格式? – Deepak

+0

是...我得到d日期lyk這個18-11-2003 – user3048068

+0

18-11-2003 java.text.ParseException:Unparseable date:「18-11-2003」 \t at java.text.DateFormat.parse( DateFormat.java:357) – user3048068

回答

2

它看起來像規定「18-11-2003」的日期包含u2013 Unicode字符,而不是一個正常的破折號是u002d

下面是一個使用字符串從問題中複製粘貼示例:

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class TestDate { 
    public static void main(String[] args) { 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
     try { 
      String trouble = "18–11–2003"; 
      String goodOne = "18-11-2003"; 
      Date date = simpleDateFormat.parse(goodOne); 
      //Date date = simpleDateFormat.parse(trouble); 
      System.out.println(String.format ("\\u%04x", (int)trouble.charAt(2))); 
      System.out.println(String.format ("\\u%04x", (int)goodOne.charAt(2))); 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
1

實際日期()的字符不是在你的日期格式(-)相同的字符。

此代碼:

public static void main(String[] args) { 
    System.out.println((int)'–'); 
    System.out.println((int)'-'); 
} 

會產生這樣的結果:

8211 
45 

有幾件事情可以做:

  1. 做一個replace()您的日期字符串(dateStr = dateStr.replace("–", "-");)至用實際的ASCII連字符替換奇怪的連字符。 *推薦*
  2. 更改從"dd–MM–yyyy""dd–MM–yyyy"