Как дублировать строки Excel? - PullRequest
0 голосов
/ 27 декабря 2018

Это мои данные Excel:

|   | Animal | Step | IsGood |
|:-:|:------:|:----:|:------:|
| 1 |   Dog  |   1  | true   |
| 2 |   Cat  |   2  | true   |

Я хочу продублировать все строки в моем файле Excel (не включая строку заголовка) и манипулировать данными.Мой новый файл Excel должен выглядеть следующим образом:

|   | Animal | Step | IsGood |
|:-:|:------:|:----:|:------:|
| 1 |   Dog  |   1  |  true  |
| 2 |   Dog  |   2  |  false |
| 3 |   Cat  |   3  |  true  |
| 4 |   Cat  |   4  |  false |

Как мне использовать Java?Я использую библиотеку org.apache.poi.

1 Ответ

0 голосов
/ 14 января 2019

Я использую этот метод для дублирования

   private void duplicateInPlace() {
    XSSFSheet firstSheetObj = this.firstWB.getSheet(firstSheetName);
    XSSFSheet targetSheetObj = this.targetWB.createSheet(this.targetSheetName);
    int firstSheetLen = firstSheetObj.getLastRowNum();
    replaceMinusOnes(firstSheetObj,firstSheetObj);
    int targetCursorPosition=0;


    //
    for (int i = 0; i <  rangeStart ; i++) {
        XSSFRow firstRow = firstSheetObj.getRow(i);
        XSSFRow targetRow = targetSheetObj.createRow(targetCursorPosition);
        this.copyRow(firstRow,targetRow);
        targetCursorPosition+=1;

    }//endfor

    for (int i = rangeStart; i <  rangeEnd ; i++) {
        XSSFRow firstRow = firstSheetObj.getRow(i);
        XSSFRow targetRow = targetSheetObj.createRow(targetCursorPosition);
        this.copyRow(firstRow,targetRow);

        XSSFRow targetRow2 = targetSheetObj.createRow(targetCursorPosition+1);
        this.copyRow(firstRow,targetRow2); //this part duplicates
        targetCursorPosition+=2;

    }

    for (int i = rangeEnd; i <  firstSheetLen ; i++) {
        XSSFRow firstRow = firstSheetObj.getRow(i);
        XSSFRow targetRow = targetSheetObj.createRow(targetCursorPosition);
        this.copyRow(firstRow,targetRow);
        targetCursorPosition+=1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...