无法从excel文件导入数据

时间:2013-11-29 05:11:08

标签: java date-format simpledateformat

当我尝试从excel文件导入数据时,我收到错误(Unparseable date:“18-11-2003”)。无法解析文件中的日期

        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();
}

2 个答案:

答案 0 :(得分: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 :(得分: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"