c#使用NPIO删除一个sheet里的多行
时间: 2023-10-16 16:07:22 浏览: 241
你可以使用 NPOI 的 API 来删除一个 sheet 里的多行,具体步骤如下:
1. 加载 Excel 文件:
```csharp
using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
{
var workbook = new XSSFWorkbook(stream);
var sheet = workbook.GetSheet(sheetName);
```
2. 遍历需要删除的行,使用 RemoveRow 方法删除:
```csharp
foreach (var rowIndex in rowIndicesToDelete)
{
var row = sheet.GetRow(rowIndex);
sheet.RemoveRow(row);
}
```
3. 删除行之后,需要对 sheet 进行重排:
```csharp
sheet.ShiftRows(startRow + 1, sheet.LastRowNum, -1);
```
4. 最后保存 Excel 文件:
```csharp
stream.Position = 0;
workbook.Write(stream);
stream.Close();
```
完整的代码如下:
```csharp
using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
{
var workbook = new XSSFWorkbook(stream);
var sheet = workbook.GetSheet(sheetName);
foreach (var rowIndex in rowIndicesToDelete)
{
var row = sheet.GetRow(rowIndex);
sheet.RemoveRow(row);
}
sheet.ShiftRows(startRow + 1, sheet.LastRowNum, -1);
stream.Position = 0;
workbook.Write(stream);
stream.Close();
}
```
其中 `rowIndicesToDelete` 为需要删除的行的索引列表,`startRow` 为删除行之后需要重排的起始行。
阅读全文