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

不懂的可以参考!欢迎各位评论

posted @ 2017-05-17 15:09  轻尘如风  阅读(8424)  评论(0编辑  收藏  举报