private static void read() {
try {
String source = "e:/12.xls";
InputStream is = new FileInputStream(source);
Workbook rwb = Workbook.getWorkbook(is);
// 获得总 Sheets
Sheet[] sheets = rwb.getSheets();

for (int i = 0; i < sheets.length; i++) {
for (int j = 0; j < sheets[i].getColumns(); j++) {
//获取指定单元格的对象引用,需要注重的是它的两个参数,第一个是列数,第二个是行数
Cell cell = sheets[i].getCell(j, i);
System.out.print("Values : " + cell.getContents().trim());
}
System.out.println();
} } catch (Exception e) {
e.printStackTrace();
}
}问题是:Sheet[] sheets = rwb.getSheets(); 这句获取不到所有行数,每次都长度都是1.指点下, 或者你有写好的给我也行。

解决方案 »

  1.   

    这句是读你的excel文件有几个sheet查api
      

  2.   

    在网上下一个开源的poi包.
     String excelfile = Util.null2String(req.getParameter("excelfile")); 
            ExcelFile ef = null; 
            ExcelSheet sheetvalues = null; 
            ExcelRow rowvalues = null; 
            HSSFWorkbook wb = null; 
            HSSFSheet sheets = null; 
            HSSFRow rows = null; 
            HSSFCell cells = null; 
            HSSFCellStyle cellStyle = null; 
            if(excelfile.equals("")) 
                ef = (ExcelFile)req.getSession(true).getAttribute("ExcelFile"); 
            else 
                ef = (ExcelFile)req.getSession(true).getAttribute(excelfile); 
            if(ef == null) 
                return; 
            wb = new HSSFWorkbook(); 
            initStyle(ef, wb); 
            int sheetindex = 0; 
            while(ef.next()) 
            { 
                String sheetname = ef.getSheetname(); 
                sheetvalues = ef.getSheet(); 
                if(sheetvalues != null) 
                { 
                    sheets = wb.createSheet(); 
                    wb.setSheetName(sheetindex, Util.fromScreen(sheetname), (short)1); 
                    sheetindex++; 
                    for(int i = 0; i < sheetvalues.size(); i++) 
                    { 
                        rowvalues = sheetvalues.getExcelRow(i); 
                        if(rowvalues != null) 
                        { 
                            short rowheight = rowvalues.getHight(); 
                            rows = sheets.createRow((short)i); 
                            if(rowheight != 255) 
                                rows.setHeightInPoints(rowheight); 
                            int rowcellindex = 0; 
                            boolean hasstyle = false; 
                            boolean hasspan = false; 
                            if(rowvalues.stylesize() == rowvalues.size()) 
                                hasstyle = true; 
                            if(rowvalues.spansize() == rowvalues.size()) 
                                hasspan = true; 
                            for(int j = 0; j < rowvalues.size(); j++) 
                            { 
                                cells = rows.createCell((short)rowcellindex); 
                                String cellvalues = Util.null2String(rowvalues.getValue(j)); 
                                String cellvalueh = cellvalues.substring(0, 2); 
                                String cellvaluev = cellvalues.substring(2); 
                                if(cellvalueh.indexOf("s_") == 0) 
                                { 
                                    cells.setEncoding((short)1); 
                                    cells.setCellValue(Util.fromHtmlToEdit(cellvaluev)); 
                                } else 
                                if(cellvalueh.indexOf("i_") == 0) 
                                { 
                                    int tempvalue = Util.getIntValue(cellvaluev); 
                                    if(tempvalue != 0) 
                                        cells.setCellValue(tempvalue); 
                                } else 
                                if(cellvalueh.indexOf("f_") == 0) 
                                { 
                                    float tempvalue = Util.getFloatValue(cellvaluev); 
                                    if((double)tempvalue != 0.0D) 
                                        cells.setCellValue(tempvalue); 
                                } else 
                                if(cellvalueh.indexOf("d_") == 0) 
                                { 
                                    double tempvalue = Util.getDoubleValue(cellvaluev); 
                                    if(tempvalue != 0.0D) 
                                        cells.setCellValue(tempvalue); 
                                } else 
                                if(cellvalueh.indexOf("o_") == 0) 
                                    cells.setCellFormula(cellvaluev); 
                                else 
                                if(cellvalueh.indexOf("n_") == 0) 
                                    if(Util.getDoubleValue(cellvaluev, -9999.9899999999998D) == -9999.9899999999998D) 
                                    { 
                                        cells.setEncoding((short)1); 
                                        cells.setCellValue(Util.fromHtmlToEdit(cellvaluev)); 
                                    } else 
                                    { 
                                        double tempvalue = Util.getDoubleValue(cellvaluev); 
                                        if(tempvalue != 0.0D) 
                                            cells.setCellValue(tempvalue); 
                                    } 
                                if(hasstyle) 
                                { 
                                    String stylename = Util.null2String(rowvalues.getStyle(j)); 
                                    if(!stylename.equals("")) 
                                    { 
                                        cellStyle = getStyle(stylename); 
                                        if(cellStyle != null) 
                                            cells.setCellStyle(cellStyle); 
                                    } 
                                } 
                                if(hasspan) 
                                { 
                                    int rowspan = rowvalues.getSpan(j); 
                                    if(rowspan > 1) 
                                    { 
                                        for(int k = 0; k < rowspan - 1; k++) 
                                        { 
                                            rowcellindex++; 
                                            cells = rows.createCell((short)rowcellindex); 
                                            cells.setCellValue(""); 
                                            if(hasstyle && cellStyle != null) 
                                                cells.setCellStyle(cellStyle); 
                                        }                                     sheets.addMergedRegion(new Region(i, (short)((rowcellindex + 1) - rowspan), i, (short)rowcellindex)); 
                                    } 
                                } 
                                rowcellindex++; 
                            }                     } 
                    }                 for(int i = 0; i < sheetvalues.columnsize(); i++) 
                        sheets.setColumnWidth((short)i, sheetvalues.getColumnwidth(i));             } 
            } 
            String filename = ef.getFilename(); 
            res.setHeader("content-disposition", "attachment; filename=" + filename); 
            ServletOutputStream out = res.getOutputStream(); 
            res.setContentType("application/octet-stream"); 
            wb.write(out); 
            out.flush(); 
            out.close(); 
      

  3.   

    sheet是工作表啊!
    rwb.getSheets();
    是获得这个Excel文件中有多少个工作表啊!
    楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0);   rs.getRow();就是获得所有的行!
      

  4.   

    参看官方文档
    http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/Workbook.html
      

  5.   

    Sheet[] sheets = rwb.getSheets()
    这个的确是获得所有工作表
    sheets[0]是第一张 再getRow 才是所有行
      

  6.   

    支持,google下,有很多例子!