POI读取所有行数和列数的数据方法
1 XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(filePath)); 2 3 //获得该工作区的第一个sheet 4 XSSFSheet sheet = wb.getSheetAt(0); 5 6 List<Device> deviceList = new ArrayList<Device>(); 7 8 //遍历所有行 9 for (Row row:sheet) { 10 if(row == null){ 11 continue; 12 } 13 //遍历行中所有的单元格 14 for (Cell cell:row) { 15 //单元格的参照 ,根据行和列确定某一个单元格的位置 16 CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); 17 //打印单元格的位置 18 System.out.print(cellRef.formatAsString()); 19 //输出分隔符 20 System.out.print(" - "); 21 //转换数据类型 22 String rfidCode = getCellTypes(cell); 23 24 //你需要实现的功能代码 25 } 26 } 27 28 29 //判断Excel导入的数据类型,转换成数据库可识别的数据类型 30 private String getCellTypes(Cell cell) { 31 String cellValue = null; 32 if (null != cell) { 33 // 以下是判断数据的类型 34 switch (cell.getCellType()){ 35 case HSSFCell.CELL_TYPE_NUMERIC: // 数字 36 // 处理日期格式、时间格式 37 if (HSSFDateUtil.isCellDateFormatted(cell)) { 38 Date d = cell.getDateCellValue(); 39 DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); 40 cellValue = formater.format(d); 41 } 42 else{ 43 cellValue = cell.getNumericCellValue() + ""; 44 } 45 46 47 break; 48 49 case HSSFCell.CELL_TYPE_STRING: // 字符串 50 cellValue = cell.getStringCellValue(); 51 break; 52 53 case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean 54 cellValue = cell.getBooleanCellValue() + ""; 55 break; 56 57 case HSSFCell.CELL_TYPE_FORMULA: // 公式 58 // cellValue = cell.getCellFormula() + ""; 59 try { 60 DecimalFormat df = new DecimalFormat("0.0000"); 61 cellValue = String.valueOf(df.format(cell.getNumericCellValue())); 62 63 } catch (IllegalStateException e) { 64 cellValue = String.valueOf(cell.getRichStringCellValue()); 65 } 66 break; 67 68 case HSSFCell.CELL_TYPE_BLANK: // 空值 69 cellValue = ""; 70 break; 71 72 case HSSFCell.CELL_TYPE_ERROR: // 故障 73 cellValue = "非法字符"; 74 break; 75 76 default: 77 cellValue = "未知类型"; 78 break; 79 } 80 } 81 return cellValue; 82 }
另外关于附上SSM导入Excel的链接地址:http://www.jianshu.com/p/1487c0e049db
不懂的可以参考!欢迎各位评论