如何使用Java Apache POI在Excel中添加标题列?

6

我正在编写一个Java程序,需要从XML文件中读取数据并将其放入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中的电子表格是按工作簿组织的,每个工作簿都按行组织,每行包含单个单元格。虽然您认为这样创建行不太高效,但实际上没有其他方法。顺便说一句,工作表通常包含成千上万行,所以我不太理解您的保留意见。 - Erich Kitzmueller
1个回答

10

只需为每个标题创建一行,并填充每个标题的第一个单元格即可!

类似于:

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)获取现有行,并在其中填充其余感兴趣的单元格


谢谢你的回复。我也想以同样的方式做。但是在我的情况下,我有100多个行标签。所以还有其他方法吗? - Madhusudan
1
".xls" 仅限于 65k 行,而 ".xlsx" 则更多,因此对于仅有几百行的数据来说,使用 ".xlsx" 没有问题! - Gagravarr
好的,我会按照你给出的方法来做。 :) - Madhusudan
@Gagravarr 谢谢。 - Vibhav Chaddha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接