Как получить значение ячейки из ячейки, которая состоит из формулы в файле Excel XLS - PullRequest
0 голосов
/ 27 мая 2019

Я пишу Java-код для чтения файла Excel и создания объекта из этого, но один столбец состоит из формулы, когда я читаю, что формула ячейки приходит в поле значения вместо значения

  1. Я пытался получить из индекса ячейки

  2. Я пытался получить значение из метода итератора (hasnext ()):

как:

public static void CheckDuplicate(File file) throws Exception {
        Set newReordsList = new LinkedHashSet();
        LinkedHashMap<String, DataCleansingObject> lhm = new LinkedHashMap<String, DataCleansingObject>();
        FileInputStream fis = new FileInputStream(file);
        HSSFWorkbook workbook = new HSSFWorkbook(fis);
        HSSFSheet spreadsheet = workbook.getSheetAt(0);
        HSSFRow row;
        Iterator< Row> rowIterator = spreadsheet.iterator();
        while (rowIterator.hasNext()) {
            row = (HSSFRow) rowIterator.next();
            if(row.getRowNum() == 0) {
                continue;
            }
            DataCleansingObject dataObj = new DataCleansingObject();

            Iterator< Cell> cellIterator = row.cellIterator();

             String key = "";
            if (cellIterator.hasNext()) {

                dataObj.setDocType(row.getCell(1).toString());
                dataObj.setDocNo(row.getCell(2).toString());
                dataObj.setDocVer(Long.parseLong(row.getCell(3).toString()));
                dataObj.setDocPart(row.getCell(4).toString());
                dataObj.setDocLang(row.getCell(5).toString());
                dataObj.setDocRev(row.getCell(6).toString());
                dataObj.setDocStatus(row.getCell(7).toString());
                dataObj.setDocSD(row.getCell(8).toString());
                dataObj.setDocLD(row.getCell(9).toString());
                dataObj.setDocChangeNumber(row.getCell(10).toString());

                key = row.getCell(1).toString() + "_" + row.getCell(2).toString() + "_" + row.getCell(3).toString() + "_" + row.getCell(4).toString();
            }

            lhm.put(key, dataObj);

        }
        fis.close();
        copyInExcel(newReordsList);

    }

Когда я звоню ниже линии

Long.parseLong(row.getCell(3).toString())

Мне нужно получить длинное значение, а не формулу в этой ячейке

...