使用Apache POI逐列编写

时间:2013-12-13 09:55:59

标签: java insert apache-poi multiple-columns

如何使用Apache POI逐列编写?

我有一个自定义地图,其中包含多个值的键。

{a=[1, 2], b=[3, 4, 5]}

现在我想把这些东西写成excel,其中a和b为列名,其值为单元格值。

Desired Output
a      b
1      3
2      4
       5

我所得到的就是使用Apache POI逐行编写。任何人都可以建议我使用技巧,以便我可以逐列编写吗?

2 个答案:

答案 0 :(得分:3)

我知道POI只支持添加行。您可以通过查看最长值列表来创建行数。在您的情况下 b 。然后遍历单元格并插入值。 POI Sheet

答案 1 :(得分:1)

我找到了答案,实际上POI只支持逐行插入,所以要逐列插入我应用这个逻辑

   HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("sheet");
    //Create a new row in current sheet
    Row row = sheet.createRow(0);
    //Create a new cell in current row
    for(String key:map.keySet())
    {
        Cell cell1=row.createCell(columnNum);
        cell1.setCellValue(key);
        //System.out.println(map.get(key));
        List<Integer> columnValues = map.get(key);
        int tempHeight=columnValues.size();
        /*if(maxRows<tempHeight)
        {
            maxRows=tempHeight;
        }*/
        int temp=1;
        for(int i:columnValues)
        {
            Row row2;
            //System.out.println("no of rows:"+(sheet.getPhysicalNumberOfRows()-1)+", height:"+tempHeight);
            if(sheet.getPhysicalNumberOfRows()-1>temp-1)
            {
                //System.out.println("take row");
                row2=sheet.getRow(temp);

            }
            else
            {

                //System.out.println("Row inserted");
                row2=sheet.createRow(temp);
            }
            Cell cell2=row2.createCell(columnNum);
            cell2.setCellValue(i);
            temp=temp+1;
        }

        columnNum=columnNum+1;


    }