比如读取 excel 文件时:
有内容就读,无内容就设置为 null.无内容的意思是:只有一个空格 或者 多个空格 或者 "" 等等本人用的是 Apache POI 来读取excel 
写的判断是:
if ((row != null) && (!row.getCell((short) 0).getStringCellValue().equals("")) &&
   (row.getCell((short) 0).getCellType()!=row.getCell((short) 0).CELL_TYPE_BLANK))
{  ... }上面的 row 表示 excel中的行,row.getCell((short) 0).getStringCellValue()表示拿到第一行第一列的值,
row.getCell((short) 0).getCellType()表示第一列的类型,CELL_TYPE_BLANK 表示为空白。上面是本人写的判断,但还是读取了无内容的列。本人想要的结果是:不读取无内容的列。本人是否还漏了其他判断条件?待朋友们给予提示和帮助?谢谢!

解决方案 »

  1.   

    没用过CELL_TYPE_BLANK这个属性 但是感觉和下面这句代码重复
    row.getCell((short) 0).getStringCellValue().equals("")
    就是检验这个单元格不是空的
    可以试着将上面那行
    改成这个
    row.getCell((short) 0).getStringCellValue().trim().equals("")
    多个空格trim一下去掉空格即可。
    试试是否可行 
      

  2.   

    第三个判断条件是不是应该判断取到的值(row.getCell((short) 0).getStringCellValue()!=row.getCell((short) 0).CELL_TYPE_BLANK)
      

  3.   

    先谢谢大家了!回2楼:我试了你的方法,可以去掉空格,但是如果是制表符就去不掉了。谢谢!
    回3楼:getStringCellValue()返回String,CELL_TYPE_BLANK 表示 类型为int型。
           我也试了强制类型转换,还不行。谢谢!用正则的话,我只听说js有正则表达式判断,那要在jsp中判断了,
    Java中有 以 正则表达式为参数的 类 吗 ?或者更好的办法。
      

  4.   

    String s = row.getCell((short) 0).getStringCellValue();
    Matcher m = Pattern.compile("\\s+").matcher(s);
    m.matches();
      

  5.   


    if ((row != null) && (!(row.getCell((short) 0).getStringCellValue().trim())equals("")) &&
      (row.getCell((short) 0).getCellType()!=row.getCell((short) 0).CELL_TYPE_BLANK))
    { ... }这样就OK了
      

  6.   

    你这样的思路貌似是不对的
    HSSFCell 的单元格值有好几种类型(请阅读包里的文件),你获取单元格值的时候先
    调用我写的这个方法,然后再做判断
    private String getCellValue(HSSFCell datacell) {
    String result = "";
    switch (datacell.getCellType()) {
    case HSSFCell.CELL_TYPE_BLANK:
    result = "";
    break;
    case HSSFCell.CELL_TYPE_STRING:
    result = datacell.getRichStringCellValue().getString();
    break;
    case HSSFCell.CELL_TYPE_NUMERIC:
    result = String.valueOf(datacell.getNumericCellValue());
    break;
    case HSSFCell.CELL_TYPE_FORMULA:
    result = "";
    break;
    case HSSFCell.CELL_TYPE_BOOLEAN:
    result = String.valueOf(datacell.getBooleanCellValue());
    break;
    case HSSFCell.CELL_TYPE_ERROR:
    result = "";
    break;
    default:
    result = datacell.getRichStringCellValue().getString();
    }
    return result;
    }
      

  7.   

    直接获取值trim不用那么费劲!
      

  8.   

    java 中的正则
    楼主可以试着用下。 java从1.4版本就支持正则表达式了。
      

  9.   

    回8楼:我尝试到API里查找Matcher类,其中Matcher类中的matchers是有参数的,
    为:static boolean matches(String regex,CharSequence input)
    我也尝试添加参数,但是还是不行,上面的"\\s+"中的+表示什么意思?连接字符串吗 ?