Java 将带有单个键和多个值的映射写入Excel工作表

Java 将带有单个键和多个值的映射写入Excel工作表,java,excel,map,Java,Excel,Map,我有一个带有单键和多个值的Map。我正在尝试将这些数据写入excel工作表 Map<String, Object[]> data=new TreeMap<String, Object[]>(); 然后我在这个映射上迭代,并将这些元素写入单元格 Set<String> keyset=data.keySet(); int rowNum=0; for(String key:keyset){ Row row=s

我有一个带有单键和多个值的
Map
。我正在尝试将这些数据写入excel工作表

Map<String, Object[]> data=new TreeMap<String, Object[]>();
然后我在这个映射上迭代,并将这些元素写入单元格

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
        {
            //Write the workbook in file system
            FileOutputStream out = new FileOutputStream(new File("D:\\testExcel.xlsx"));
            workbook.write(out);
            out.close();
            System.out.println("testExcel.xlsx written successfully on disk.");
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
Set keyset=data.keyset();
int rowNum=0;
用于(字符串键:键集){
Row-Row=sheet.createRow(rowNum++);
Object[]objArr=data.get(key);
int-cellNum=0;
用于(对象对象对象:对象对象对象){
Cell Cell=row.createCell(cellNum++);
if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(obj instanceof Integer)
cell.setCellValue((整数)obj);
}
}
尝试
{
//在文件系统中编写工作簿
FileOutputStream out=新的FileOutputStream(新文件(“D:\\testExcel.xlsx”);
练习册。写(出);
out.close();
System.out.println(“testExcel.xlsx已成功写入磁盘”);
} 
捕获(例外e)
{
e、 printStackTrace();
}
这里的问题是在我的excel工作表中,我只能看到两列是值。我无法在excel工作表中打印键。我希望将我的键打印为第一列,然后两列和三列是值。如何在此循环中添加键


感谢所有的

您不会在内部循环中添加密钥-它不是您正在循环的数据的一部分。您需要将其添加到循环之前:

row.createCell(0).setCellValue(key); // Key is in column 0
int cellNum = 1; // Values now start at column 1
// Loop as before

(当然,这仍然在外循环中-您希望每行显示一个键。)

您不会将键添加到内循环中-它不是要循环的数据的一部分。您需要将其添加到循环之前:

row.createCell(0).setCellValue(key); // Key is in column 0
int cellNum = 1; // Values now start at column 1
// Loop as before
(当然,这仍然在外循环中-您希望每行显示一个键。)