java - 为什么使用 poi api java 从 Excel 文件读取数据时格式会发生变化?

标签 java excel

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

2 comes like 2.0, 1189736455 comes like 1.18973645E8 in Exponential format..

为什么会发生这种情况,有人可以帮忙吗? 提前致谢...

这是我的示例代码 Sheet_numUI 和 Sheet_numDB 是两个文件中的工作表数量...一般来说,我从文件中读取并与我存储在列表中的某些值以及存储在另一个 Excel 文件中的结果进行比较。 ..但是,当从第二个文件(workBookUI)获取数据时(在我的程序中),我没有得到预期值...

以下是文件: reader enter image description here 输出文件是:enter image description here

   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/

相关文章:

java - Spring+Hibernate异常: No hibernate session bound to thread

java - 以尽可能少的更改动态地(在运行时)更改持久层

java - ECDH 和 ECDSA key 之间有区别吗?

java - 使用身份验证 cookie 打开 WebSocket 连接

excel - 提取或选择单元格的前两个数字

python - openpyxl.charts 中的引用不起作用 (min_col) Python 3

java - Eclipse IDE 使用代理对处理表情符号

excel - 包含文本(不是数字)的单元格的条件格式

使用 ISBLANK 的 EXCEL IF/OR 语句

vba - Excel VBA 打开 Word 模板,填充,然后在其他位置另存为 .docx 文件