NPOI 如何判断Excel工资表中,每一行其中一列是否与其他行的这一列的值是否重复,如果重复,删除第一个重复的行
时间: 2024-04-10 09:27:47 浏览: 196
要判断 Excel 工资表中每一行的某一列是否与其他行的同一列的值重复,并删除第一个重复的行,可以使用以下方法:
```csharp
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
// 加载 Excel 文件
FileStream fileStream = new FileStream("path/to/your/excel/file.xlsx", FileMode.Open);
XSSFWorkbook workbook = new XSSFWorkbook(fileStream);
// 获取要操作的 Sheet
ISheet sheet = workbook.GetSheetAt(0); // 假设操作第一个 Sheet
// 需要判断的列索引(假设为第一列)
int columnIndex = 0;
HashSet<string> valueSet = new HashSet<string>();
// 遍历每一行进行判断
for (int rowIndex = sheet.FirstRowNum + 1; rowIndex <= sheet.LastRowNum; rowIndex++)
{
IRow row = sheet.GetRow(rowIndex);
// 获取当前行的指定列的值并转换为字符串
string columnValue = row.GetCell(columnIndex)?.ToString();
// 判断当前值是否已存在于 HashSet 中
if (valueSet.Contains(columnValue))
{
// 如果已存在,则删除当前行
sheet.RemoveRow(row);
}
else
{
// 如果不存在,则添加到 HashSet 中
valueSet.Add(columnValue);
}
}
// 保存并关闭 Excel 文件
fileStream.Close();
File.Delete("path/to/your/excel/file.xlsx"); // 删除原始文件
FileStream newFileStream = new FileStream("path/to/your/excel/file.xlsx", FileMode.CreateNew);
workbook.Write(newFileStream);
newFileStream.Close();
```
以上代码会遍历 Excel 工资表中的每一行,判断指定列的值是否已存在于 HashSet 中,若存在则删除当前行,若不存在则添加到 HashSet 中。最后保存并关闭 Excel 文件。
请注意,上述示例中假设要判断的列索引为 0,即第一列。你可以根据实际需要修改 `columnIndex` 的值以及其他相关的列索引和操作。
阅读全文