2016-05-29 58 views
0

我創建一個Excel如下文件和我要像下面來更新它的公式文件:更新Excel中使用Java

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(); 
    } 
    } 

回答

0

你只是忘記了之前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"}); 

這工作

+0

我只是忘了它,但不是我的意思,我的代碼 工作中。如果你能提供幫助,請參閱我的要點1至4。謝謝 – Morad