首页 > 解决方案 > SetCellValue 不适用于第一行 java

问题描述

我正在使用 apache poi 将数据写入 excel 文件。当我将值传递给第一行的列(用于标题)时,它的值不会更新,但从第 2 行开始,我可以在 excel 文件中看到数据。下面是我正在使用的代码。

    public static void writeWorkBook(Map<String, List<String>> addressMap, List<String> userList) {
    System.out.println("Writing Process Started ");
    XSSFWorkbook workbook = new XSSFWorkbook();

    for (String user : userList) {
        XSSFSheet sheet = workbook.createSheet("Data_" + user);
        int rownum = 1;
        Row row = sheet.createRow(rownum);
        Cell cell = row.createCell(0);
        cell.setCellValue("User");

        cell = row.createCell(1);
        cell.setCellValue("Address");

        List<String> addressList = addressMap.get(user);
        for (String s : addressList) {
            row = sheet.createRow(rownum++);
            cell = row.createCell(0);
            cell.setCellValue(user);
            cell = row.createCell(1);
            cell.setCellValue(s);
        }
    }

    try {

        FileOutputStream out = new FileOutputStream(new File("D://practice/java/testWrite.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("testWrite.xlsx written successfully on disk.");
        workbook.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我得到的输出是 在此处输入图像描述

标签: javaapache-poi

解决方案


第一:所有索引都是从 0 开始的。所以

...
int rownum = 1; 
Row row = sheet.createRow(rownum);
...

创建第二行。第一行将是

...
int rownum = 0; 
Row row = sheet.createRow(rownum);
...

第二:row = sheet.createRow(rownum++);首先创建行,然后rownum递增。所以再次创建第一行而不是第二行。

...
row = sheet.createRow(++rownum);
...

反而。


推荐阅读