обновление файла Excel формулами с использованием Java

Я создал файл excel, как показано ниже, и я хочу обновить его следующим образом:

1-проверить, если строка имеет нулевое значение (если да, то сделать суммирование u1 с каждой строки имеет нулевое значение, если не перейти к проверке следующей строки).

2-найти среднее значение каждой строки, которая имела нулевое значение после суммирования.

3-заменить ячейку нулевого значения на среднее значение.

4-скопируйте обновленный excel в другой excel.

Кто-нибудь может помочь?

    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("correct missing Value");
    Map<String, Object[]> data = new TreeMap<String, Object[]>();

    data.put("1", new Object[]{"ID", "USERS", I1","I2","I3","I4","I5","I6"});
    data.put("2", new Object[]{1, "U1", 4, 2, 3, 5, 3, 4});
    data.put("3", new Object[]{2, "U2", 3, 0, 2, 4, 2, 3});
    data.put("4", new Object[]{3, "U3", 5, 0, 4, 4, 4, 5});
    data.put("5", new Object[]{4, "U4", 0, 1, 2, 4, 2, 3});

    Set<String> keyset = data.keySet();
    int rownum = 0;
    for (String key : keyset) {
        Row row = sheet.createRow(rownum++);
        Object[] objArr = data.get(key);
        int cellnum = 0;
        for (Object obj : objArr) {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String)
                cell.setCellValue((String) obj);
            else if (obj instanceof Integer)
                cell.setCellValue((Integer) obj);
        }
    }
    try {

        FileOutputStream out = new FileOutputStream(new File("Test.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("Test.xlsx written successfully on disk.");
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

1 ответ

  1. вы просто забыли » перед I1 в этой строке :

    data.put("1", new Object[]{"ID", "USERS", I1","I2","I3","I4","I5","I6"});
    

    правильная линия была бы :

    data.put("1", new Object[]{"ID", "USERS", "I1","I2","I3","I4","I5","I6"});
    

    И это работает