如何使用Java Apache POI从excel中删除整行?

时间:2019-01-18 11:04:46

标签: java apache-poi

我想从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 :(得分:0)

即使我也遇到了同样的问题,但经过几次研究后才发现

存在一个错误,或者它们可能更改了Apache Poi <version>4.0.0</version> and <version>4.0.1</version>中的行为

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版本中对其进行更新

谢谢您能为您提供帮助