600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java poi设置单元格格式为数值 Apache POI 如何读取Excel中数值类型单元格所规定

java poi设置单元格格式为数值 Apache POI 如何读取Excel中数值类型单元格所规定

时间:2021-10-02 23:35:28

相关推荐

java poi设置单元格格式为数值 Apache POI 如何读取Excel中数值类型单元格所规定

问题描述

java apache poi 包内是否有方法可以获取Excel数值类型单元格中保留的位数?

问题出现的环境背景及自己尝试过哪些方法

有这么一个场景:

需求:从Excel文件中读取数据,原样落库

我的实现思路:使用POI读取每个单元格内容,根据规则落库

但是在使用POI读取数值类型的单元格时出现了问题,有这么一类值,格式是保留n位小数,但是小数位为全0:

这种类型的值我在使用POI读取时,只能读到整数位,无法读取小数位。

我尝试过的获取方法为(仅节选处理数值类型单元格逻辑):

使用NumberFormat格式化:import org.apache.poi.ss.usermodel.*;

private static NumberFormat numberFormat = NumberFormat.getNumberInstance();

public static String getStringValue(Cell cell){

String cellValue;

//是数字类型单元格

if(cell.getCellTypeEnum().equals(CellType.NUMERIC)){

//非日期类型的数字单元格

if(!DateUtil.isCellDateFormatted(cell)){

double doubleValue = cell.getNumericCellValue();

cellValue = numberFormat.format(doubleValue);

}

}

return cellValue;

}

使用DecimalFormat格式化:import org.apache.poi.ss.usermodel.*;

private static DecimalFormat decimalFormat = new DecimalFormat("#.######");

public static String getStringValue(Cell cell){

String cellValue;

//是数字类型单元格

if(cell.getCellTypeEnum().equals(CellType.NUMERIC)){

//非日期类型的数字单元格

if(!DateUtil.isCellDateFormatted(cell)){

double doubleValue = cell.getNumericCellValue();

cellValue = decimalFormat.format(doubleValue);

}

}

return cellValue;

}

直接设置类型为String获取:import org.apache.poi.ss.usermodel.*;

public static String getStringValue(Cell cell){

String cellValue;

//是数字类型单元格

if(cell.getCellTypeEnum().equals(CellType.NUMERIC)){

//非日期类型的数字单元格

if(!DateUtil.isCellDateFormatted(cell)){

cell.setCellType(CellType.STRING);

cellValue = cell.getStringCellValue();

}

}

return cellValue;

}

但是最终的结果都无法读取我想要的保留n位0的数

后来我又尝试了使用EasyExcel,得到的是同样的结果。

你期待的结果是什么?实际看到的错误信息又是什么?

我期待结果为:能够读取出 1000000.00、1000.0000、185.00这三个字符串。

我分析过为什么无法读取出,应该是因为单元格内存储的值就是整数,只是显示出来的时候加上了单元格保留小数的格式。

所以我认为单纯的读数应该解决不了这个问题,需要再获取一个该单元格的保留位数值才行,但是我翻了一下POI的文档,好像都没有看到类似的方法。所以求助各位大佬!

java apache poi 包内是否有方法可以获取Excel数值类型单元格中保留的位数?

或者是否有其他可以达到效果的实现方法?

java poi设置单元格格式为数值 Apache POI 如何读取Excel中数值类型单元格所规定的保留小数位?...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。