Java 使用ApachePOI逐列写入
如何使用ApachePOI逐列编写 我有一个自定义映射,其中的键包含多个值Java 使用ApachePOI逐列写入,java,insert,apache-poi,multiple-columns,Java,Insert,Apache Poi,Multiple Columns,如何使用ApachePOI逐列编写 我有一个自定义映射,其中的键包含多个值 {a=[1, 2], b=[3, 4, 5]} 现在我想把这些东西写进excel,a和b作为列名,它们的值作为单元格值 Desired Output a b 1 3 2 4 5 我得到的只是使用ApachePOI逐行编写。有人能给我建议一个技巧,让我可以一列一列地写吗?我知道POI只支持添加行。您可以通过查看最长值列表来创建行数。在您的情况下,b。然后遍历单元格并插入值。
{a=[1, 2], b=[3, 4, 5]}
现在我想把这些东西写进excel,a和b作为列名,它们的值作为单元格值
Desired Output
a b
1 3
2 4
5
我得到的只是使用ApachePOI逐行编写。有人能给我建议一个技巧,让我可以一列一列地写吗?我知道POI只支持添加行。您可以通过查看最长值列表来创建行数。在您的情况下,b。然后遍历单元格并插入值。
我找到了答案,实际上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;
}
HSSFWorkbook工作簿=新的HSSFWorkbook();
HSSFSheet sheet=工作簿.createSheet(“工作表”);
//在当前图纸中创建新行
Row Row=sheet.createRow(0);
//在当前行中创建新单元格
for(字符串键:map.keySet())
{
Cell cell1=row.createCell(columnNum);
cell1.设置CellValue(键);
//System.out.println(map.get(key));
List columnValues=map.get(键);
int tempHeight=columnValues.size();
/*如果(maxRowstemp-1)
{
//System.out.println(“take row”);
第2行=表。getRow(温度);
}
其他的
{
//System.out.println(“插入行”);
row2=sheet.createRow(临时);
}
Cell cell2=row2.createCell(columnNum);
cell2.设置CellValue(i);
温度=温度+1;
}
columnNum=columnNum+1;
}
请不要忘记在问题中添加“?”!有些人在页面中搜索“?”,如果“问题”中不存在,则直接转到行中的下一个(实际)问题。好的@andrewhompson,我将从下次开始记住这一点,我也会按照相同的逻辑,查找特定的键集并找到其深度,然后将其与我们在excel中插入的maxRows进行比较,但我不能使它有效率,无论如何,你的建议是高度赞赏的