为什么在使用poi api java从excel文件读取数据时格式会更改?

为什么在使用poi api java从excel文件读取数据时格式会更改?,java,excel,Java,Excel,我有一张excel工作表,在阅读格式更改时,如下所示 2的指数值为2.0,1189736455的指数值为1.18973645E8 格式 为什么会发生这种情况,有人能帮忙吗。。 先谢谢你 这是我的示例代码Sheet_numUI和Sheet_numDB是表格两个文件的编号。。。通常在这里,我从一个文件中读取数据,并与存储在列表中的某个值进行比较,然后将结果存储在另一个excel文件中。。。但是,当从第二个文件即workBookUI(在我的程序中)获取数据时,我并没有得到预期的值 以下是文件:read

我有一张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;
            }

        }
if(Sheet\u numUI==Sheet\u numDB){

对于(int i=0;i我假设您使用的是cell方法。getNumericCellValue()返回一个双精度-双精度将始终打印至少1个小数。对于指数格式,这就是大双精度打印的大小。有关如何在没有科学记法的情况下打印大双精度的问题,请参阅以下问题:

此外,如果您的目标是使用POI将结果打印回另一个电子表格,则可以创建单元格样式以格式化输入单元格的数字。例如:

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

请提供更多详细信息,即您用于读取值的代码示例。另外,当您尝试读取值时,它在哪里出现格式错误?