Excel数据只写在第一行 – java

我已经写了一个使用java写数据到excel的代码,但是它不会增加roe值,导致在第1行本身覆盖数据。我知道rownum计数增量问题。

 import java.util.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.*; import java.io.*; public class ExcelWriter { static int rownum; @Test public void ExcelWriters(Integer i, String CableName, String Count, String EndCableId, String FirstCableId) { rownum = i; HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("WhileTrue"); Map < Integer, Object[] > data = new HashMap < Integer, Object[] > (); { data.put(i, new Object[] { "Sr.no", "Cable", "Total Count", "EndCableId", "FirstCableId" }); data.put(i, new Object[] { i, CableName, Count, EndCableId, FirstCableId }); Set < Integer > keyset = data.keySet(); for (Integer key: keyset) { HSSFRow row = sheet.createRow(rownum++); Object[] objArr = data.get(key); int cellnum = 0; for (Object obj: objArr) { HSSFCell cell = row.createCell(cellnum++); if (obj instanceof Date) cell.setCellValue((Date) obj); else if (obj instanceof Boolean) cell.setCellValue((Boolean) obj); else if (obj instanceof String) cell.setCellValue((String) obj); else if (obj instanceof Double) cell.setCellValue((Double) obj); } } try { FileOutputStream outputStream = new FileOutputStream((new File("FilePath"))); workbook.write(outputStream); outputStream.close(); System.out.println("Excel written Successfully"); } catch (IOException e) { e.printStackTrace(); } } } 

}

通过使用data.put(i,new Object[]{...}两次,map只保存给定key i的最后一个值,(即)覆盖列的名字。

改变第一个put(i,YOUR_COL_NAMES); put(0,YOUR_COL_NAMES);

我只在poi图书馆工作一次,所以我没有太多的知识,但通过看你的代码我认为问题是 –

使用这段代码之后

 data.put(i, new Object[] { "Sr.no", "Cable", "Total Count", "EndCableId", "FirstCableId" }); 

你必须增加我的价值,因为当你把两个数据行放在一个excel行在同一个地方