java 读取Excel百分数保留原格式(即不转换为小数)的方法

我们在用Java使用poi读取Excel时,或许会遇到百分数,然而poi自动将百分数转换为了小数,如果小数是以0开头的还可能被删除了起始的0,变成了.**,虽然数值大小没变,但是直观展示变了,对于不懂开发只关注结果的领导来说难免产生误解,这一误解就是100倍的,所以大多数时候需要我们将百分号%保留,那么下面就记录一种本人总结的方式:
 1  /**
 2      * 获取单元格值
 3      * 
 4      * @param row 获取的行
 5      * @param column 获取单元格列号
 6      * @return 单元格值
 7      */
 8     public Object getCellValue(Row row, int column)
 9     {
10         if (row == null)
11         {
12             return row;
13         }
14         Object val = "";
15         try
16         {
17             Cell cell = row.getCell(column);
18             if (StringUtils.isNotNull(cell))
19             {
20                 if (cell.getCellType() == CellType.NUMERIC || cell.getCellType() == CellType.FORMULA)
21                 {
22                     val = cell.getNumericCellValue();
23                     if (DateUtil.isCellDateFormatted(cell))
24                     {
25                         val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换
26                     }
27                     else
28                     {
29                         if ((Double) val % 1 != 0)
30                         {
31                             val = new BigDecimal(val.toString());
32                         }
33                         else
34                         {
35                             val = new DecimalFormat("0").format(val);
36                         }
37                     }
38                 }
39                 else if (cell.getCellType() == CellType.STRING)
40                 {
41                     val = cell.getStringCellValue();
42                 }
43                 else if (cell.getCellType() == CellType.BOOLEAN)
44                 {
45                     val = cell.getBooleanCellValue();
46                 }
47                 //解决导入Java 读取Excel百分数保留原格式(即不转换为小数)的方法
48                 else if(cell.getCellType() == CellType.FORMULA)
49                 {
50                     if(cell.getCellStyle().getDataFormatString().indexOf("%") != -1){
51                         val = cell.getNumericCellValue()*100+"%";
52                     }
53                 }
54 
55                 else if (cell.getCellType() == CellType.ERROR)
56                 {
57                     val = cell.getErrorCellValue();
58                 }
59 
60             }
61         }
62         catch (Exception e)
63         {
64             return val;
65         }
66         return val;
67     }

 

 

上一篇:第一次工作关键代码总结


下一篇:Cell | 蛋白基因组学揭示胰腺癌潜在治疗靶点与早期诊断标志