SetCellValue не работает для первой строки Java - PullRequest
0 голосов
/ 13 октября 2019

Я использую 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();
    }
}

Вывод, который я получаю, enter image description here

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Первый: все индексы основаны на 0. Таким образом,

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

создает строку second . Первая строка будет

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

Вторая: сначала в row = sheet.createRow(rownum++); создается строка, а затем увеличивается rownum. Таким образом, первая строка создается снова вместо второй строки.

Do

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

вместо.

0 голосов
/ 13 октября 2019

Получение и установка строк начинаются с 0, поэтому, если вы хотите, чтобы описание было в первой строке, вам нужно использовать 0 в качестве аргумента в

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