我有一个 Excel 工作表,在阅读时格式更改如下
2 comes like 2.0, 1189736455 comes like 1.18973645E8 in Exponential format..
为什么会发生这种情况,有人可以帮忙吗? 提前致谢...
这是我的示例代码 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;
}
}
最佳答案
我假设您使用的单元格方法 .getNumericCellValue() 返回一个 double 值 - double 值始终会打印至少 1 位小数。至于指数格式,这就是 double 打印的大小。请参阅此问题,了解如何在没有科学记数法的情况下处理打印大 double :How to print double value without scientific notation using Java?
此外,如果您的目标是将结果打印回带有 POI 的另一个电子表格中,您可以创建单元格样式来格式化您放入单元格中的数字。例如:
DataFormat format = workbook.createDataFormat();
CellStyle number = workbook.createCellStyle();
number.setDataFormat(format.getFormat("#,##0"));
关于java - 为什么使用 poi api java 从 Excel 文件读取数据时格式会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24015183/