2016-05-29 48 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