如何使用Apache POI逐列编写?
我有一个自定义地图,其中包含多个值的键。
{a=[1, 2], b=[3, 4, 5]}
现在我想把这些东西写成excel,其中a和b为列名,其值为单元格值。
Desired Output
a b
1 3
2 4
5
我所得到的就是使用Apache POI逐行编写。任何人都可以建议我使用技巧,以便我可以逐列编写吗?
答案 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;
}