2015-11-16 283 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