今天在开发过程中遇到一个导入数据的问题,是在是很坑,也怪自己经验不足,没有遇到过,这里做以下记录,以作警记。
一般我们在java中去除数据的空格会用到trim()方法,亦或用到replace(" ","")方法,但是这里从excel中获取到的字符串会隐含全角字符的中文空格,当然肉眼是看不到的,上面用到的两个方法都是不起作用的,以下是代码的解决方案:
//获得excel表中的日期
XSSFRow rowEachDate = sheet1.getRow(1);
int colCountDate=rowEachDate.getLastCellNum();//每行的列数
String cellDateStr="";
if(colCountDate>0){
XSSFCell cellDate = rowEachDate.getCell(1);//拿到excel表中每一行的第一个设备名称
cellDate.setCellType(XSSFCell.CELL_TYPE_STRING);// 设置为字符串类型
cellDateStr=cellDate.getStringCellValue();
}
char[] charArray = cellDateStr.toCharArray();
for(int i=0;i<charArray.length;i++)
{
System.out.println(i+"->"+(int)charArray[i]);
}
cellDateStr=cellDateStr.replace((char)12288,'\0');
cellDateStr=cellDateStr.trim();
//转换系统当前日期格式与excel保持一致
String[] arrayDate=tjrq.split("-");
String dateNew="";//拼接的新日期格式
for(int i=0;i<arrayDate.length;i++){
String year=arrayDate[0];
String month=arrayDate[1];
String days=arrayDate[2];
dateNew=year+"年"+month+"月"+days+"日";
dateNew=dateNew.trim();
}
//System.out.println("111111111111111111111111111111:"+dateNew);
if(!cellDateStr.equals(dateNew)){
AppTool.alertInDialogForUploadFile(request, "您导入的excel表数据日期与当前系统数据日期不匹配,无法进行导入");
AppTool.closeDialogForUploadFile(request);
return AppTool.NO_ACTION;
}
其中 cellDateStr=cellDateStr.replace((char)12288,'\0');
cellDateStr=cellDateStr.trim();
是最为关键的两行代码,之后再做时间判断最与此进行比较不再出现判断不相等问题,至此,问题解决。