java - 如何使用 Java Apache POI 从 Excel 中删除整行?

标签 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);

但它只删除行中的值而不是整行。

最佳答案

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

存在错误/或者他们可能更改了 <version>4.0.0</version> and <version>4.0.1</version> 中的行为 Apache 波伊 对于

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 版本中更新它

如果对你有帮助的话谢谢

关于java - 如何使用 Java Apache POI 从 Excel 中删除整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252684/

相关文章:

java - XLSX 下载已损坏 Apache POI 到带有 ResponseEntity<Resource> 的 ByteArrayOutputStream

java - 如何计算线程被挂起的次数

java - 为整个服务中使用的数据对象设计通用接口(interface)

java - 使用 @mock 进行模拟将变为 null

java - JSONAssert.assertEquals : Ignoring multiple fields when comparing

java - 使用 POI 获取应用于 Excel 单元格的货币

java - java计算索引前的空格数

java - 如何在 apache POI 中重复标题(灰色区域)

java - 垂直合并单元格并将数据插入单元格

java - 使用 Apache POI 从 Java 应用程序删除行时不更新 Excel 公式