java读取excel中单元格数据导入数据库存在问号

haoztao 2012-07-23 11:28:53
1.excel单元格的数据尾部都有一个空白
2.javatrim()函数也不管用。

String [][]str=new String[iRowCount][iColCount];

for (int i=1;i<iRowCount;i++) {
HSSFRow row=sheet.getRow(i);
if(sheet.getRow(i)!=null){
for(int j=0;j<iColCount;j++) {
HSSFCell cell =row.getCell(j);
if (cell!=null){
switch(cell.getCellType()) //判断类型
{
case HSSFCell.CELL_TYPE_NUMERIC: //数字
cell_value=((Double)cell.getNumericCellValue()).toString().trim();
//cell_value=cell_value.substring(0,cell_value.length());
System.out.println("xxxxxxxx长度"+cell_value.length());
System.out.println("xxxxxxxx长度"+cell_value);
break;
case HSSFCell.CELL_TYPE_STRING: //字符串
cell_value=cell.getStringCellValue().toString().trim();
//cell_value = new String(cell_value.getBytes(), "utf-8");
//cell_value=encodeURI(cell_value);
break;
case HSSFCell.CELL_TYPE_FORMULA: //公式
cell_value= cell.getCellFormula().toString().trim();

break;
case HSSFCell.CELL_TYPE_BLANK: // 空值
cell_value= " <font color=red> null </font> ";
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
break;
default: //未知类型
cell_value= " <font color=red> null </font> ";
break;

} //end switch]);
out.print(cell_value+ "      ");
//str[i][j]=cell_value=cell_value.substring(0,cell_value.length()-1);
str[i][j]=cell_value.replace((char)12288,' ').replace(" ","");
//str[i][j]=cell_value.replace(" ","").trim();


System.out.println("第"+i+"行,第"+j+"列 :"+ str[i][j]);
} //end if
} //end for (short j = 0; j < iColCount; j++) {
// out.print( " <br> ");
} //end if(sheet.getRow(i)==null){
else
{
iRowCount++;
System.out.println("fileToBeRead " + iRowCount);
}

除了截取有木有好办法
...全文
423 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoztao 2012-08-27
  • 打赏
  • 举报
回复
经查看空白对应的ascii码发现其对应的值为160,而trim()只能清除ascii码为32的空格。先将其转化为ascii码为32的空格,然后在使用trim()
str=str.replace(String.valueOf((char)160)," ");
str=str.trim();
System.out.println("xxxxxxx"+str+"xxx");
我这样解决了,更楼上的方法差不多 呵呵
EverWHL 2012-07-23
  • 打赏
  • 举报
回复
str.replace("\\s+", "");//去除全角空格
MiceRice 2012-07-23
  • 打赏
  • 举报
回复
查了下ASCII编码表:

160 HTML空格(即: ) 解释:Non-breaking space

原来如此,那么只能试试看:
str = str.replaceAll("[u00A0]", "");
haoztao 2012-07-23
  • 打赏
  • 举报
回复
生: 29983
存: 23384
退: 36864
保: 20445
 : 160
输出结果。。
MiceRice 2012-07-23
  • 打赏
  • 举报
回复
这写的啥啊。。。晕死。。。

char[] cs = str.toCharArray();
for (char c:cs) {
System.out.println(c + ": " + ((int) c));
}

然后看看内容是啥。
haoztao 2012-07-23
  • 打赏
  • 举报
回复

String str="生存退保 ";
String str1="生存退保";

byte[] buff=str.getBytes();
int strnum=buff.length;
System.out.println(strnum);

byte[] buff1=str1.getBytes();
int strnum1=buff1.length;
System.out.println(strnum1);


str=str.replace(" ","");
str=str.replace('\t',' ');
str=str.trim();
//str=vacM.trimtest(str);
String insertSQL="insert into import (one) values ('"+str+ "')";
System.out.println("xxxxxxx"+insertSQL);

怎么整str都有空白,帮看看是啥类型空白吧?跪谢了
MiceRice 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
这个空白占四个字节。
[/Quote]

tab 不会占四个字节,tab 只占一个字节,其ASCII码为:8
brightyq 2012-07-23
  • 打赏
  • 举报
回复
去tab ,用str = str.replaceAll("\\s+", ""); 也没有问题啊。
haoztao 2012-07-23
  • 打赏
  • 举报
回复
这个空白占四个字节。
haoztao 2012-07-23
  • 打赏
  • 举报
回复
是tab空格,java中如何清楚掉?
MiceRice 2012-07-23
  • 打赏
  • 举报
回复
把这个字符串转为 char[],然后逐个显示其 数值 大小,分析下这神奇的空白究竟是个啥。可能是其它类型的不可显示字符。
brightyq 2012-07-23
  • 打赏
  • 举报
回复
没明白楼主什么意思。
是要去后面的空格吗?insertSQL里,不是没有空格了吗?
haoztao 2012-07-23
  • 打赏
  • 举报
回复

String str="生存退保 ";
str=str.trim();
str=str.replace(" ","");
str=str.replaceAll("\\s*", "");
str=str.replace("\\s+", "");
String insertSQL="insert into import (one) values ('"+str+ "')";
System.out.println("xxxxxxx"+insertSQL);

咋整。一直不行
haoztao 2012-07-23
  • 打赏
  • 举报
回复

String str="生存退保 ";
String str1="haha ";
str=str.trim();
str1=str1.trim();
str=str.replace(" ","");
str=str.replaceAll("\\s*", "");

String insertSQL="insert into import (one) values ('"+str+ "')";
String insertSQL1="insert into import (one) values ('"+str1+ "')";

System.out.println("xxxxxxx"+insertSQL);
System.out.println("xxxxxxx"+insertSQL1);

如上面的str字符串,是我从那个excel中复制过来的,咋整都不中。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧