2013-11-29 124 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"