简体   繁体   中英

How to delete an entire row from excel using Java Apache POI?

I want to delete an entire row from excel,

I have tried removeRow :

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

and shiftRows :

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

But it is deleting only values in row not the entire row.

Even i faced the same problems but figured after a couple of researches and found

There was a bug/or they might have changed the behavior in <version>4.0.0</version> and <version>4.0.1</version> of Apache Poi for

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

Please use

<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>

And use your code much better way to remove you row like this

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);
            }
        }
    }

And it worked for me. May be they might update it in next api releases

Thank you if it would have helped you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM