Apache-POI в Java не возвращает вычисленное значение ячейки - PullRequest
1 голос
/ 03 апреля 2019

В настоящее время для загрузки приложения Excel в java используется мост java-com с последующей загрузкой книги Excel. Хотя вычисленные значения ячеек извлекаются точно, вскоре после загрузки приложения Excel загрузка ЦП достигает 100% и происходит сбой программы после обработки 5-7 записей. К сожалению, базовый dll, jcom.dll больше не поддерживается и не поддерживается.

Итак, я пытаюсь получить вычисленные значения ячеек из проприетарной электронной таблицы, используя Apache-POI в Java. Формулы и вычисления на листе 0 хранятся в виде указателей на формулы, которые находятся на других скрытых листах в рабочей книге. При получении вычисленного значения код возвращает указатель на скрытый лист и ячейку, содержащую формулу на этом скрытом листе, в виде строки.

Любое предложение получить вычисленное значение или альтернативу POI, если это невозможно сделать в POI?

После запуска кода, показанного ниже, ожидается возрастное значение 39, но результат будет отображаться как

«Неформатированные значения»! AD13

У меня нет прав для вставки изображения калькулятора, разрешена только ссылка на изображение.

public class POICalculator {
    public static void main(String[] args) {
 //   To fill cell values in calculator spreadsheet and 
 //   obtain computed cell value
        InputStream ExcelFileToRead;
        try {
          ExcelFileToRead = new FileInputStream("C:\\temp\\XLS\\NPCalculatorBlack.xls");
          HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead);
          HSSFWorkbook test = new HSSFWorkbook(); 
          HSSFSheet sheet = wb.getSheetAt(0);
          HSSFRow row; 
          HSSFCell cell;
          String examDate = "04/02/2019";
          String birthDate = "01/01/1980";

// input cell value for F3
          sheet.getRow(2).getCell(5).setCellValue(examDate);
// input cell value for H3
          sheet.getRow(2).getCell(7).setCellValue(birthDate);
          HSSFFormulaEvaluator.evaluateAllFormulaCells(wb);                 
          HSSFFormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();                  
// output computed AGE value from cell B5 - Expected result: 39
          String age = sheet.getRow(4).getCell(1).toString();
          System.out.println(age);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }   
}
...