Копирование двух разных листов Excel на один лист с использованием Java - PullRequest
0 голосов
/ 09 апреля 2019

Копирование двух разных листов Excel на один новый лист Excel с использованием кода Java приводит к частичному выводу.

Это для Java-кода, выполняющегося в IntelliJ с использованием Apache POI.

public static void copySheet(XSSFSheet inputSheet1, XSSFSheet outputSheet, XSSFSheet inputSheet2)

    {
        int rowCount = inputSheet1.getLastRowNum();
        int rc = inputSheet2.getLastRowNum(),rcnt=0,cri =0,l=0;
        int currentRowIndex = 0, cell = 0;
        if (rowCount > 0) {
            Iterator rowIterator = inputSheet1.iterator();
            while (rowIterator.hasNext()) {
                int currentCellIndex = 0;
                Iterator cellIterator;
                Row row = (Row) rowIterator.next();
                cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {
                    //Creating new Row, Cell and Input value in the newly created sheet.
                    String cellData = cellIterator.next().toString();
                    if (currentCellIndex == 0)
                        outputSheet.createRow(currentRowIndex).createCell(currentCellIndex).setCellValue(cellData);
                    else
                        outputSheet.getRow(currentRowIndex).createCell(currentCellIndex).setCellValue(cellData);
                    currentCellIndex++;
                    System.out.println("content test2 " + cellData);
                    System.out.println("current row index  " + currentRowIndex);
                    System.out.println("current cell   " + cell);
                }
                currentRowIndex++;
                cell = currentCellIndex;
                rcnt = cell;
            }
        }
        cri = 0;
        if (rc > 0) {
            Iterator rowIterator = inputSheet2.iterator();
            while (rowIterator.hasNext()) {
                int currentCellIndex2 = 0,cci = rcnt+1;
                Iterator cellIterator2;
                Row row = (Row) rowIterator.next();
                cellIterator2 = row.cellIterator();
                while (cellIterator2.hasNext()) {

                    String cellData = cellIterator2.next().toString();

                    if (currentCellIndex2 == 0)
                        outputSheet.createRow(cri).createCell(cci).setCellValue(cellData);
                    else
                        outputSheet.getRow(cri).createCell(cci).setCellValue(cellData);
                    currentCellIndex2 = currentCellIndex2+1;
                    cci = cci +1;
                    System.out.println("content "+cellData);
                    System.out.println("current row index  " + cri);
                }
                cri++;
            }
        }
}

Ожидаемый результат :

оба листа должны быть скопированы на новый лист.

Фактическая мощность :

только второй входной лист копируется на новый лист. Если я попытаюсь скопировать один первый лист, он будет скопирован. Но если я попытаюсь скопировать оба, будет присутствовать только второй лист.

Input_one

input_one

Input_two

input_2

выход

output

1 Ответ

0 голосов
/ 09 апреля 2019

Похоже, вы перезаписываете вывод первого цикла while выводом второго, потому что в одном вы используете currentRowIndex, а во втором - cri. Повторно используйте currentRowIndex и для второго цикла while, чтобы строки второго листа добавлялись после строк первого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...