【问题标题】:Write column by column using Apache POI使用 Apache POI 逐列写入
【发布时间】:2014-01-01 01:07:37
【问题描述】:

如何使用 Apache POI 逐列写入?

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

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

现在我想将这些东西写入excel,将a和b作为列名,将它们的值作为单元格值。

Desired Output
a      b
1      3
2      4
       5

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

【问题讨论】:

  • 请不要忘记添加“?”提问!有些人在页面中搜索“?”如果“问题”中不存在,则直接转到下一个(实际)问题。
  • 好的@AndrewThompson,下次我会记住这一点

标签: java insert apache-poi multiple-columns


【解决方案1】:

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

【讨论】:

  • 我也遵循相同的逻辑,寻找特定的键集并找到它的深度,然后将其与我们在 excel 中插入的 maxRows 进行比较,但我无法使其高效,无论如何你的建议非常感谢
【解决方案2】:

我找到了答案,其实 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;


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多