значение ячейки Excel для чтения кода Java (округленное до 91,58666666666% и упомянутое как 91,58) как ноль с использованием PoI - PullRequest
0 голосов
/ 06 июня 2018

Ниже приведен код для чтения в соответствии с типом данных и добавления в коллекцию, представляющую собой строку.

Этот код возвращает нулевое значение ячейки Excel, которая содержит значение "91.58666666666%"

case (Cell.CELL_TYPE_STRING):
                                //System.out.println("***********Inside String ******"+"i-->"+i+"j-->"+j);
                                row.add(sh1.getRow(i).getCell(j).getStringCellValue());
                                break;
                            case (Cell.CELL_TYPE_NUMERIC):
                                //System.out.println("***********Inside Integer ******");
                                int t = (int) sh1.getRow(i).getCell(j).getNumericCellValue();
                               // System.out.println("***********TVALUE ******"+Integer.toString(t));
                                row.add(Integer.toString(t));
                                break;      
                            case (Cell.CELL_TYPE_BLANK):
                                //System.out.println("***********Inside String ******"+"i-->"+i+"j-->"+j);
                                //System.out.println("***********Blank ******"+sh1.getRow(i).getCell(j).getStringCellValue());
                                row.add(sh1.getRow(i).getCell(j).getStringCellValue());
                                break;
                            case (Cell.CELL_TYPE_FORMULA):
                                //System.out.println("***********Inside String ******"+"i-->"+i+"j-->"+j);
                                //System.out.println("***********Blank ******"+sh1.getRow(i).getCell(j).getStringCellValue());
                                DataFormatter fmt = new DataFormatter();
                                String valueAsSeenInExcel = fmt.formatCellValue(cell);
                                row.add(sh1.getRow(i).getCell(j).getStringCellValue());
                                break;
                            default:
                                //DataFormatter fmt = new DataFormatter();
                                // Once per cell
                                //String valueAsSeenInExcel = fmt.formatCellValue(cell);
                                cell.setCellType(Cell.CELL_TYPE_STRING);
                                row.add(sh1.getRow(i).getCell(j).getStringCellValue());
                                break;

1 Ответ

0 голосов
/ 06 июня 2018

Эти строки, вероятно, виновны:

int t = (int) sh1.getRow(i).getCell(j).getNumericCellValue();
row.add(Integer.toString(t));

Поскольку значение меньше 1, оно будет усечено до нуля.Проценты хранятся в виде значений с плавающей запятой, где 100% = 1,0.

Использовать с плавающей запятой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...