Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 386
Priya Dharshan Avatar asked Feb 16 '26 12:02

Priya Dharshan


1 Answers

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

like image 170
KishanCS Avatar answered Feb 19 '26 01:02

KishanCS