本帖最后由 a911dalin 于 2013-12-30 13:01:17 编辑

解决方案 »

  1.   

    倒不是只要能把合并的单元格正确的读取出来就行,jxl能实现么
      

  2.   

    下面是用poi实现读取Excel文件,不知道是否满足LZ你的需求,不妨一试!
    /**
     * 读取Excel2007文档兼容Excel2003
     * @return
     * @throws Exception
     */
    public String readExcel2007() throws Exception{
    Workbook wb = WorkbookFactory.create(new File("C:/Users/KingPoint/Desktop/user.xlsx"));
    Sheet sheet = wb.getSheetAt(0);//获取第一个工作单
    int rowNum = sheet.getLastRowNum();//获取行的总数
    Row row = sheet.getRow(1);
    int colNum = row.getLastCellNum();//获取列的总数
    String str="";
    /*遍历所有行,注意下面是从工作表单的第二行开始遍历*/
    for(int i=1,len=rowNum;i<=len;i++){
    row = sheet.getRow(i);
    /*遍历所有列*/
    for(int j=0,len2=colNum;j<len2;j++){
    /*获取当前的单元格值*/
    Cell cell = row.getCell(j);
    /*判断当前值是否是数值类型*/
    if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
    /*设置该单元格已字符串格式输出*/
    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
    /*判断是否为最后一列,是最后一列加上#ER#用来区分每一行*/
    if(j == len2 - 1){
    str+=cell.getStringCellValue()+"#ER#";
    }else{
    str+=cell.getStringCellValue()+"~";
    }
    }else{
    /*判断是否为最后一列,是最后一列加上#ER#用来区分每一行*/
    if(j == len2 -1){
    str += row.getCell(j) + "#ER#";
    }else{
    str += row.getCell(j) + "~";
    }
    }
    }
    }
    if(!str.equals("")){
    str = str.substring(0,str.length() - 4);
    }
    return str;
    }