作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Apache POI 从 Excel 中读取数据。我想在用 Java 阅读时将一些单元格转换为数字,如下所示:
Input 01.0234500
Output 1.02345
Input 412206362371
Output 4.12206E+11
Input 1234.201400002345
Output 1234.2014
当我在 Excel 中使用“转换为数字”时,它工作正常。但我希望在用 Java 读取 Excel 单元格时得到相同的输出。
也可以使用Excel中的=VALUE()
函数来实现。但是如何在 Java 中实现相同的功能呢?
最佳答案
我认为有很多方法可以完成你规定的事情,但最直接的方法就是使用 VALUE()
函数,然后对其求值。这当然不是最有效的方法,但它确实有效。
本质上,我们只是读入输入单元格的值,然后创建一个新的单元格公式单元格,其中包含以原始值作为参数的 VALUE()
函数。之后,我们调用 evalutateInCell
来评估 VALUE()
函数并用结果替换单元格值。
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("test");
Row row = sheet.createRow(0);
Cell inCell = row.createCell(0);
inCell.setCellValue("01.0234500");
Cell outCell = row.createCell(1);
FormulaEvaluator fev = wb.getCreationHelper().createFormulaEvaluator();
String value = inCell.getStringCellValue();
outCell.setCellFormula("VALUE(" + value + ")");
fev.evaluateInCell(outCell);
如果您愿意,可以使用相同的方法替换原始单元格的内容。
关于java - 如何用Java做Excel的 "Convert to Number",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25636632/
我是一名优秀的程序员,十分优秀!