我有一张excel表,在阅读格式时会发生如下变化
2来自2.0,1189736455来自指数1.18973645E8 格式..
为什么会这样,有人可以帮忙.. 提前谢谢......
这里是我的示例代码Sheet_numUI和Sheet_numDB是两个文件的表单数量...一般来说,我从一个文件中读取并与我存储在列表中的某个值进行比较,并将结果存储在另一个excel文件中。 ..但是从第二个文件中获取数据是workBookUI(在我的程序中),我没有得到预期的值......
以下是文件:reader 输出文件是:
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;
}
}
答案 0 :(得分:1)
我假设你正在使用单元格方法.getNumericCellValue()返回一个double - 一个double将始终打印至少1个小数。至于指数格式,那就是打印的双倍大小。请参阅此问题,了解如何在没有科学记数法的情况下打印大型双打:How to print double value without scientific notation using Java?
此外,如果您的目标是将结果打印回带有POI的另一个电子表格,您可以创建一个单元格样式来格式化放入单元格的数字。例如:
DataFormat format = workbook.createDataFormat();
CellStyle number = workbook.createCellStyle();
number.setDataFormat(format.getFormat("#,##0"));