2015-11-16 282 views
0

我正在寫一個java程序,我必須從XML文件中取數據並將其放入excel文件中。在做這個時,我必須創建行標題並相應地添加數據。如何使用Java Apache POI在Excel中添加標題列?

我知道如何創建列標題。我可以用以下的方式做到這一點:

.... 
HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet sheet = workbook.createSheet("EDR Raw Data"); 

    Row header = sheet.createRow(0); 
    header.createCell(0).setCellValue("Header1"); 
    header.createCell(1).setCellValue("Header2"); 
    header.createCell(2).setCellValue("Header3"); 
    header.createCell(3).setCellValue("Header4"); 
.... 

它創建Excel文件,如下圖所示: enter image description here

但我想我的Excel文件看起來像如下:

enter image description here

我沒有辦法做到這一點。單獨創建所需數量的行不是個好主意。有沒有什麼辦法可以創建一個列並添加該列中的所有標題?

我試圖做到這一點的方法是:

.... 
HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("EDR Raw Data"); 

sheet.createRow(0).createCell(0).setCellValue("header1"); 
sheet.createRow(1).createCell(0).setCellValue("header2"); 
sheet.createRow(2).createCell(0).setCellValue("header3"); 
sheet.createRow(3).createCell(0).setCellValue("header4"); 
... 

但在我的情況下,我不得不放棄100+行標籤。所以這不會是有效的方法。

+1

在HSSF/XSSF電子表格工作簿中的組織,每個工作簿按行組織,每行包含單個單元格。雖然您認爲創建這樣的行效率不高,但實際上沒有辦法解決這個問題。順便說一句,工作表通常包含成千上萬的行,所以我不完全理解你的保留意見。 –

回答

4

只需爲每個標題創建一行,並填充每個標題的第一個單元格!

喜歡的東西:

String[] headers = new String[] { "Header1", "Header2", "Header3" }; 

Workbook workbook = new HSSFWorkbook(); 
Sheet sheet = workbook.createSheet("EDR Raw Data"); 

for (int rn=0; rn<headers.length; rn++) { 
    Row r = sheet.createRow(rn); 
    r.createCell(0).setCellValue(headers[rn]); 
} 

然後填充數據時,做sheet.getRow(rownumber)獲得現有行,並填充感興趣的剩餘細胞在它

+0

感謝您的回覆。我想以同樣的方式做。但在我的情況下,我有100多行標籤。那麼還有其他方法嗎? – Madhusudan

+1

'.xls'僅限於65k行,'.xlsx'更多,所以沒有問題只有幾百! – Gagravarr

+0

好吧。我會遵循你給出的方法。 :) – Madhusudan