sheet.shiftRows(21, 44, -13); 操作后原21-34行没了
时间: 2024-03-09 20:48:24 浏览: 235
根据你提供的信息,可能是因为你使用的是 Apache POI 库,而 `sheet.shiftRows(21, 44, -13)` 方法默认会删除被移动的行数据。具体来说,这个方法的第四个参数默认为 true,表示删除被移动的行数据,如果你希望保留被移动的行数据,需要将第四个参数设置为 false。
以下是一个示例代码,展示如何使用 `sheet.shiftRows` 方法将 Sheet 中的行整体向上移动,并保留被移动的行数据:
```java
import org.apache.poi.ss.usermodel.*;
import java.io.*;
public class ExcelExample {
public static void main(String[] args) throws IOException {
// 打开 Excel 文件
Workbook workbook = WorkbookFactory.create(new File("example.xlsx"));
// 选择 Sheet
Sheet sheet = workbook.getSheet("Sheet1");
// 向上移动第 21 行到第 44 行整体 13 行,并保留被移动的行数据
sheet.shiftRows(20, 43, -13, false, true);
// 保存修改后的 Excel 文件
FileOutputStream outputStream = new FileOutputStream("example.xlsx");
workbook.write(outputStream);
outputStream.close();
}
}
```
这个示例代码中,我们首先使用 `WorkbookFactory.create` 方法打开了一个名为 `example.xlsx` 的 Excel 文件,并选择了名为 `Sheet1` 的工作表。然后,我们使用 `sheet.shiftRows` 方法将第 21 行到第 44 行整体向上移动了 13 行,并保留了被移动的行数据。其中,`false` 表示不删除被移动的行数据,`true` 表示更新公式的引用。最后,我们使用 `FileOutputStream` 将修改后的 Excel 文件保存到磁盘上。
阅读全文