使用单个键和多个值将地图写入Excel工作表

时间:2013-10-16 05:57:57

标签: java excel map

我有一个Map,包含单个键和多个值。我正在尝试将这些数据写入Excel工作表。

Map<String, Object[]> data=new TreeMap<String, Object[]>();

在这张地图中,我正在设置一些值。

ContentRoleType role=ContentRoleType.toContentRoleType("PRIMARY");
QueryResult contentQuery=ContentHelper.service.getContentsByRole(cadDoc, role);
System.out.println("Content length of "+cadDoc.getName()+" is "+contentQuery.size()); 
ContentLength=contentQuery.size(); 
data.put(CadName, new Object[]{Iteration,ContentLength});

然后我在迭代这个地图并将这些元素写入单元格。

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

这里的问题在我的Excel工作表中我只能看到两列是值。我无法在Excel工作表中打印密钥。我想打印我的密钥作为我的第一列,然后两个和三个是值。如何在此循环中添加密钥?

全部谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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