Чтение данных из ячейки

#java #excel #apache-poi

#java #excel #apache-poi

Вопрос:

У меня есть два файла xlsx, один с ожидаемым результатом, другой был сгенерирован приложением. Визуально между файлами нет различий. Из первого файла я могу получить все данные. Но, когда я пытаюсь прочитать данные из второго файла (сгенерированного файла), все данные с форматом валюты возвращаются с пустой строкой.

введите описание изображения здесь

Но когда я копирую все данные во вновь созданный файл, я могу его прочитать. Что не так с сгенерированным файлом и как это исправить?

  public String get_CellData(int rownum, int colnum) throws Exception {
            try {
                cell = sheet.getRow(rownum).getCell(colnum);
                String CellData = null;
                switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        System.out.println("The type of cell is STRING ");
                        CellData = cell.getStringCellValue();
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.println("The type of cell is NUMERIC ");
                        if (DateUtil.isCellDateFormatted(cell)) {
                            //CellData = cell.getDateCellValue().toString();
                            SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
                            CellData = sdf.format(cell.getDateCellValue());
                        } else {
                            String typeCell = cell.getCellStyle().getDataFormatString();
                            System.out.println("typeCell: "   typeCell);
                            if (typeCell.contains("%")) {
                                // DecimalFormat df5 = new DecimalFormat( "#,###,###,##0.00000");
                                DecimalFormat df5 = new DecimalFormat("#######.##0.00000");
                                Double value = cell.getNumericCellValue() * 100;
                                CellData = df5.format(value)   "%";
                                System.out.println("Percent value found = "   CellData.toString());
                            } else {
                                DataFormatter formatter = new DataFormatter();//("#,##0.00");
                                int formatIndex = cell.getCellStyle().getDataFormat();
                                String cellFormattedData = formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "#0.00");
                                //String cellFormattedData =  formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "###.##");
                                CellData = cellFormattedData;
                            }
                        }
                        break;
                    case Cell.CELL_TYPE_BLANK:
                        System.out.println("The type of cell is BLANK ");
                        CellData = "";
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.println("The type of cell is BOOLEAN ");
                        CellData = Boolean.toString(cell.getBooleanCellValue());
                        break;
                    case Cell.CELL_TYPE_FORMULA:
                        System.out.println("The type of cell is FORMULA ");
                        System.out.println("Formula is "   cell.getCellFormula());
                        switch (cell.getCachedFormulaResultType()) {
                            case Cell.CELL_TYPE_NUMERIC:
                                System.out.println("Last evaluated as: "   cell.getNumericCellValue());
                                DataFormatter formatter = new DataFormatter();//("#,##0.00");
                                int formatIndex = cell.getCellStyle().getDataFormat();
                                String cellFormattedData = formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "#,##0.00");
                                CellData = cellFormattedData;
                                break;
                            case Cell.CELL_TYPE_STRING:
                                System.out.println("Last evaluated as ""   cell.getRichStringCellValue()   """);
                                CellData = cell.getStringCellValue();
                                break;
                        }

                }
                return CellData;
            } catch (Exception e) {
                return "";
            }
        }
 

Комментарии:

1. Где ваш код?

2. Пожалуйста, поделитесь кодом, давайте посмотрим, что вы пробовали в первую очередь?

3. Только что добавлено. Дайте мне знать, если у вас есть какие-либо идеи. Когда я использую метод, debug переходит в case Cell.CELL_TYPE_STRING и возвращает пустую строку

4. Как этот вопрос связан с Selenium ? Я что-то упустил?

5. Не могли бы вы поделиться ссылкой для просмотра автоматически сгенерированного файла?