问题背景
我们项目有个场景是上传excel文件,上传的文档中有保留两位小数的数字格式,上传之后的数据会经过处理后在写入另一个文档。如果用String去读写,会保留精度,但读文件的时候只能读格式化之后的数字。如果用BigDecimal去读写,能读到真实的数字,但在处理之后写入excel时有可能会丢失精度。
如果用BigDecimal去读,String写入,可以解决这个问题,但涉及大量的dto copy,影响效率。下面我们来看看demo演示。
demo演示
- 代码如下
public class Test5 {
public static void main(String[] args) {
String fileName = "g://" + "demo" + File.separator + "demo.xlsx";
List<DemoData> list = EasyExcel.read(fileName, DemoData.class, null).sheet().doReadSync();
List<DemoData1> result = new ArrayList<>();
for(DemoData demoData:list){
if(demoData.getCol2() != null){
demoData.setCol2(demoData.getCol2().add(new BigDecimal("500000000000.123456")));
DemoData1 demoData1= new DemoData1();
demoData1.setCol1(demoData.getCol1());
demoData1.setCol2(demoData.getCol2().toString());
result.