日期:2014-05-19  浏览次数:20849 次

解析xls文件,解析的总条数问题------急!急
再导入解析xls文件时,有的文件解析的总条数解析正确,有的多了一条

解析代码 
Java code

public List<HashMap<String, Object>> excuteExcel(InputStream is,
            int sheetNumber) throws Exception {
        
        HSSFWorkbook workbook = new HSSFWorkbook(is);
    
        List<HashMap<String, Object>> result = new ArrayList<HashMap<String, Object>>();
        
        //得到 sheet
        HSSFSheet sheet = workbook.getSheetAt(sheetNumber);
        // 一共有 sheet 
        int rowCount = sheet.getLastRowNum();

        if (rowCount < 1) {
            return result;
        }
        //得到一个有多少个例
        int cellCount = sheet.getRow(0).getLastCellNum();
        // 遍历所有的row
        for (int rowIndex = 0; rowIndex <= rowCount; rowIndex++) {
            //得到俱体的
            HSSFRow row = sheet.getRow(rowIndex);
            if (null != row) {
                HashMap<String, Object> rowData = new HashMap<String, Object>();
                
                // 遍历例cell
                for (short cellIndex = 0; cellIndex < cellCount; cellIndex++) {
                    HSSFCell cell = row.getCell(cellIndex);
                // 得到例的值
                Object cellStr = this.getCellString(cell)==null?"":this.getCellString(cell);
                                     String str=cellStr.toString();
                                     if(str!=null){
                                  str=str.replaceAll("'", "");
                                      }
                    rowData.put(String.valueOf(cellIndex), cellStr);
                     
                }
                result.add(rowData);
            }
        }
        return result;
    }



------解决方案--------------------
没看代码,不过多的一行可能是空行,在里面编辑过的,虽然没数据,但解析的时候也算一行。
判断总行数,可以根据行是否有值来判断该行是否为有效行。
------解决方案--------------------
这个验证下打出的内容,验证的时候前面加个标志。看看到底多的是什么。

这个要看你的要求,如果需要就不做操作,如果不需要就remove掉呗。

个人觉得应该默认都要去掉null的数据吧。就像你说的if()...else...