当合并来自不同来源的数据集或复制其他工作表中的数据时,如果数据匹配不正确,可能会导致出现重复的行。这些重复行可能会扭曲数据分析和计算,从而产生不准确的结果。因此,删除重复行是一项经常需要执行的任务。本文将展示如何使用 Spire.XLS for .NET 以编程方式完成此任务。
安装 Spire.XLS for .NET
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从 此链接 下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS用 C# 和 VB.NET 删除 Excel 中的重复行
手动删除重复行是一项非常重复且耗时的任务。使用 Spire.XLS for .NET,您可以一次识别并删除所有重复行。详细步骤如下。
- 创建 Workbook 实例。
- 使用 Workbook.LoadFromFile() 方法加载示例Excel文档。
- 使用 Workbook.Worksheets[sheetIndex] 属性通过索引获取指定的工作表。
- 使用 Worksheet.Range 属性指定需要删除重复记录的单元格区域。
- 获取指定单元格区域中包含重复内容的行。
- 循环遍历所有重复的行,并使用 Worksheet.DeleteRow() 方法删除它们。
- 使用 Workbook.SaveToFile() 方法保存结果文档。
- C#
- VB.NET
using Spire.Xls;
using System.Linq;
namespace RemoveDuplicateRows
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Workbook实例
            Workbook workbook = new Workbook();
            //加载示例Excel文档
            workbook.LoadFromFile("测试文档.xlsx");
            //获取指定工作表
            Worksheet sheet = workbook.Worksheets[0];
            //指定需要删除重复记录的单元格区域
            var range = sheet.Range["A1:A" + sheet.LastRow];
            //获取重复的行号
            var duplicatedRows = range.Rows
                   .GroupBy(x => x.Columns[0].DisplayedText)
                   .Where(x => x.Count() > 1)
                   .SelectMany(x => x.Skip(1))
                   .Select(x => x.Columns[0].Row)
                   .ToList();
            //移除重复行      
            for (int i = 0; i < duplicatedRows.Count; i++)
            {
                sheet.DeleteRow(duplicatedRows[i] - i);
            }
            //保存结果文档
            workbook.SaveToFile("删除重复行.xlsx");
        }
    }
}Imports Spire.Xls
Namespace RemoveDuplicateRows
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建Workbook实例
            Dim workbook As Workbook = New Workbook()
            '加载示例Excel文档
            workbook.LoadFromFile("测试文档.xlsx")
            '获取指定工作表
            Dim sheet As Worksheet = workbook.Worksheets(0)
            '指定需要删除重复记录的单元格区域
            Dim range = sheet.Range("A1:A" & sheet.LastRow.ToString())
            '获取重复的行号
            Dim duplicatedRows = range.Rows.GroupBy(Function(x) x.Columns(0).DisplayedText).Where(Function(x) x.Count() > 1).SelectMany(Function(x) x.Skip(1)).[Select](Function(x) x.Columns(0).Row).ToList()
            '移除重复行      
            For i As Integer = 0 To duplicatedRows.Count - 1
                sheet.DeleteRow(duplicatedRows(i) - i)
            Next
            '保存结果文档
            workbook.SaveToFile("删除重复行.xlsx")
        End Sub
    End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 
    


 
					



