gpt4 book ai didi

java - 如何使用 apache poi 删除一行

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:01 26 4
gpt4 key购买 nike

我试图删除第三行

这是我根据 rgettman、Leo、zibi 的评论所做的编辑。谢谢。

public class MainTest {

public static void main(String[] args) throws IOException {

FileInputStream file = new FileInputStream(new File("test.xlsx") );
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = wb.getSheetAt(0);
sheet.removeRow(sheet.getRow(3));
// sheet.shiftRows(3, 3, -1);

File outWB = new File("testResult.xlsx");
OutputStream out = new FileOutputStream(outWB);
wb.write(out);
out.flush();
out.close();


System.exit(0);
}

}

但这会删除一行中的值但不会删除该行

最佳答案

如果您正在使用 XLS 文件(不是 XLSX),那么您应该使用 HSSFWorkbook。我刚刚测试了下面的解决方案,一切正常:

    File file = new File(....);
FileInputStream fis = new FileInputStream(file);
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet sheet = wb.getSheetAt(0);

sheet.shiftRows(3, 3, -1);

File outWB = new File(.....);
OutputStream out = new FileOutputStream(outWB);
wb.write(out);
out.flush();
out.close();

或者甚至更好地使用 Workbook 工厂,它可以为您识别类型:

    Workbook wb = WorkbookFactory.create(file);
Sheet sheet = wb.getSheetAt(0);
sheet.shiftRows(3, 3, -1);

下面你可以找到一个删除行的函数,它可以在 xls 和 xlsx 中使用(已测试;))。

Workbook wb = WorkbookFactory.create(file);
Sheet sheet = wb.getSheetAt(0);
removeRow(sheet, 2);
File outWB = new File(...);
OutputStream out = new FileOutputStream(outWB);
wb.write(out);
out.flush();
out.close();


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

关于java - 如何使用 apache poi 删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com