- Excel主要分为2003和2010版本。分别是HssFWorkBook和XssFWorkBook。
InputStream is = new FileInputStream("C:/Users/Administrator/Desktop/test.xlsx"); XSSFWorkbook xs = new XSSFWorkbook(is); XSSFSheet sheet = xs.getSheetAt(0); System.out.println(sheet.getLastRowNum()); for (Row row : sheet) { for (int i = 0; i < row.getLastCellNum(); i++) { System.out.println(ExcelUtil.getCellValue(row.getCell(i))); } }
- XssFSheet获得第几张表。下标从零开始,不一定和从Excel文件里看到的一样,因为有些Sheet文件是隐藏的,仍然占用着下标。
sheet1
sheet2
- getLastRowNum()方法获得有效区域行数。row.getCell(i)获得单元格。
我自己封装了获得单元格内容的方法ExcelUtil.getCellValue(Cell cell);
/** * <p>得到Excel单元格的内容,支持Boolean、Number、String、公式</p> * @author zhanglixuan * */ public static String getCellValue(Cell cell) { if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) { return String.valueOf(cell.getBooleanCellValue()).trim(); } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) { DecimalFormat df = new DecimalFormat("0"); String cellValue = df.format(cell.getNumericCellValue()); return cellValue; } else if (cell.getCellType() == cell.CELL_TYPE_FORMULA) { return String.valueOf(cell.getCellFormula()).trim(); } else { return String.valueOf(cell.getStringCellValue()).trim(); } }