gpt4 book ai didi

java - 使用 apache poi 从 excel 获取错误值

转载 作者:行者123 更新时间:2023-11-30 08:08:36 24 4
gpt4 key购买 nike

在Excel中,列的值是10101101010000000000,但是当我使用POI在java中读取它时,该值更改为10101101009999999000,任何人都可以告诉我发生了什么以及如何从Excel中获取准确的值。我尝试将单元格类型设置为字符串并使用 cell.getStringCellValue() 以及这个 new BigDecimal(cell.getNumericCellValue()).toPlainString() 但我仍然没有获得与 Excel 相同的值

这是我的代码

List<BankClassVo> data = new ArrayList<BankClassVo>();
FileInputStream fis = new FileInputStream(new File(Constant.VALIDATION_REFERENCE_FILE_PATH + Constant.BANK_CLASSIFICATION_REF_FILE + ".xlsx"));
XSSFWorkbook myWorkBook = new XSSFWorkbook(fis);
XSSFSheet mySheet = myWorkBook.getSheetAt(1);
Iterator<Row> rowIterator = mySheet.iterator();


while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();

BankClassVo vo = new BankClassVo ();


while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (cell.getColumnIndex() == 0) {
vo.setsClass(new BigDecimal(cell.getNumericCellValue()).toPlainString());
}
else if (cell.getColumnIndex() == 1) {
vo.setClassification(cell.getStringCellValue());
}
}

data.add(vo);
}

myWorkBook.close();
return data;

最佳答案

使用MathContextRoundingModeRef

BigDecimal value = new BigDecimal(cell.getNumericCellValue(), new MathContext(10 , RoundingMode.CEILING));
System.out.println(value.toPlainString());

关于java - 使用 apache poi 从 excel 获取错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com