如何使用Apache POI逐列寫入?使用Apache POI按列逐列寫入
我有一個自定義地圖,其中我有包含多個值的鍵。
{a=[1, 2], b=[3, 4, 5]}
現在我想把這些東西寫入excel,其中a和b作爲列名和它們的值作爲單元格值。
Desired Output
a b
1 3
2 4
5
我所得到的就是使用Apache POI逐行寫入。任何人都可以提出我的詭計,以便我可以一欄一列地寫出來嗎?
如何使用Apache POI逐列寫入?使用Apache POI按列逐列寫入
我有一個自定義地圖,其中我有包含多個值的鍵。
{a=[1, 2], b=[3, 4, 5]}
現在我想把這些東西寫入excel,其中a和b作爲列名和它們的值作爲單元格值。
Desired Output
a b
1 3
2 4
5
我所得到的就是使用Apache POI逐行寫入。任何人都可以提出我的詭計,以便我可以一欄一列地寫出來嗎?
我找到答案,其實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;
}
請不要忘記加上「?」提問!有些人在頁面中搜索'?'如果'問題'中不存在,則直接進入下一個(實際)問題。 –
ok @AndrewThompson,我會在下一次 – Pulkit