C# 批次刪除Excel中的重複行

E-iceblue發表於2024-04-29

當從不同來源匯入Excel資料時,可能存在重複的記錄。為了確保資料的準確性,通常需要刪除這些重複的行。手動查詢並刪除可能會非常耗費時間,而透過程式設計指令碼則可以實現在短時間內處理大量資料。本文將提供一個使用C# 快速查詢並刪除Excel重複項的免費解決方案。

以下是實現步驟:

1. 首先安裝免費.NET Excel 庫 - Free Spire.XLS for .NET。( 可透過Nuget直接安裝或者下載後手動安裝)

2. 匯入名稱空間。

3. 使用 LoadFromFile() 方法載入Excel檔案。

4. 獲取指定工作表,並指定需要查詢重複記錄的單元格區域。

5. 使用LINQ 查詢來找出重複行,並將這些行的行號儲存在一個列表中。

6. 遍歷這個列表並刪除所有重複行。

7. 儲存檔案。

刪除Excel重複行(C#程式碼)

using Spire.Xls;
using System.Linq;
 
namespace RemoveDuplicateRows
{
    class Program
    {
        static void Main(string[] args)
        {
            //載入Excel檔案
            Workbook workbook = new Workbook();
            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);
            }
 
            //儲存Excel檔案
            workbook.SaveToFile("刪除重複行.xlsx");
        }
    }
}

以上程式碼快速查詢了指定單元格範圍內的重複項並實現一次性批次刪除。效果如圖:


Free Spire.XLS for .NET提供了一種操作Excel文件的高效方法,而無需依賴Microsoft Excel。這個庫還支援讀取、寫入、轉換、列印Excel等各種功能,可點選其中文教程檢視更多示例。

相關文章