ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-10-19 16:32:14  阅读:244  来源: 互联网

标签:getCellType java val 百分数 Excel else cell CellType row


我们在用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     }

 

 

标签:getCellType,java,val,百分数,Excel,else,cell,CellType,row
来源: https://www.cnblogs.com/springclout/p/15425225.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有