为什么使用poi api java从e​​xcel文件读取数据时格式发生变化?

我有一个Excel表格,在阅读格式更改如下

2来像2.0,1189736455来像是1.18973645E8在指数格式..

为什么发生这种情况,任何人都可以请帮助..在此先感谢…

这里是我的示例代码Sheet_numUI和Sheet_numDB是表单数量两个文件…一般在这里我从一个文件中读取,并与我存储在列表中的一些值进行比较,并将结果存储在另一个excel文件中…但而从第二个文件,这是workBookUI的数据(在我的程序),我没有得到期望值…

以下是文件:读者 在这里输入图像说明 并输出文件是: 在这里输入图像说明

if(Sheet_numUI==Sheet_numDB){ for(int i=0;i<Sheet_numUI;i++){ Sheet_nameDB=workBookDB.getSheetAt(i).getSheetName(); Sheet_nameUI=workBookUI.getSheetAt(i).getSheetName(); ResultXLS_Reader = new OMEGA_XLSX_Reader(file.getAbsolutePath()); ResultXLS_Reader.addSheet1(Sheet_nameDB); counter=4; DBCol=readerDB.getColumnCount(Sheet_nameDB); DBRow=readerDB.getRowCount(Sheet_nameDB); UICol=readerUI.getColumnCount(Sheet_nameUI); UIRow=readerUI.getRowCount(Sheet_nameUI); for(int y=0;y<DBRow;y++){ for (int x=0;x<DBCol;x++){ if(y==0){ val=readerDB.getCellData(Sheet_nameDB, x, y+1); ResultXLS_Reader.setCellDataStringColorLightGreen(Sheet_nameDB, x+1, y+1,val); }else{ val=readerDB.getCellData(Sheet_nameDB, x, y+1); ResultXLS_Reader.setCellData(Sheet_nameDB, x+1, y+1,val); list.add(val); } System.out.println("List : "+ list); } } // data insertion over compVal=(String) map.get(Sheet_nameDB); for(int k=0;k<=UIRow;k++){ for(int l=0;l<UICol;l++){ val=readerUI.getCellData(Sheet_nameUI, l, k); if(val.equalsIgnoreCase(compVal)){ completeRow=readerUI.getRow(Sheet_nameUI, k-1); for(Cell cell: completeRow){ list2.add(cell); } if(list2 != null && list2.size() > 0){ for(int m=0;m<list2.size();m++){ String val1=list.get(m).toString(); String val2=list2.get(m).toString(); if(val1.equalsIgnoreCase(val2)){ ResultXLS_Reader.setCellDataColorLightGreen(Sheet_nameDB,m+1,counter, val1); }else{ ResultXLS_Reader.setCellDataColorRed(Sheet_nameDB, m+1,counter, val2); } } counter=counter+1; } list2.clear(); } } } list.clear(); counter =0; } } 

我假设你正在使用单元格方法.getNumericCellValue(),它返回一个双 – 一个double将始终打印至less1小数。 至于指数格式,那就是多大的双打印。 看到这个问题如何处理打印大型双打没有科学记数法: 如何打印双重价值没有科学记数法使用Java?

此外,如果您的目标是将结果打印回另一个包含POI的电子表格,则可以创build单元格样式来格式化放入单元格中的数字。 例如:

 DataFormat format = workbook.createDataFormat(); CellStyle number = workbook.createCellStyle(); number.setDataFormat(format.getFormat("#,##0"));