Как удалить всю строку из Excel, используя Java Apache POI? - PullRequest
0 голосов
/ 18 января 2019

Я хочу удалить всю строку из Excel,

Я пробовал removeRow:

XSSFRow rerow = sheet1.getRow(1);
sheet1.removeRow(rerow);

и shiftRows:

int rowIndex = 1;
int lastIntext = sheet1.getLastRowNum();
sheet1.shiftRows(rowIndex+1, lastIntext, -1);

Но он удаляет только значения в строке, а не всю строку.

1 Ответ

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

Даже я столкнулся с такими же проблемами, но понял после пары исследований и обнаружил

Произошла ошибка / или они могли изменить поведение в <version>4.0.0</version> and <version>4.0.1</version> Apache Poi для

sheet1.shiftRows(rowIndex+1, lastIntext, -1);

Пожалуйста, используйте

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>

И используйте ваш код намного лучше, чтобы удалить строку, подобную этой

public static void removeRow(Sheet sheet, int rowIndex) {
        int lastRowNum = sheet.getLastRowNum();
        if (rowIndex >= 0 && rowIndex < lastRowNum) {
            sheet.shiftRows(rowIndex + 1, lastRowNum, -1);
        }
        if (rowIndex == lastRowNum) {
            Row removingRow = sheet.getRow(rowIndex);
            if (removingRow != null) {
                sheet.removeRow(removingRow);
            }
        }
    }

И это сработало для меня. Может быть, они могут обновить его в следующих выпусках API

Спасибо, если бы это помогло вам

...