使用C#刪除Excel表格中的重復(fù)行數(shù)據(jù)的代碼詳解
簡(jiǎn)介
重復(fù)行是指在Excel表格中完全相同的多行數(shù)據(jù)。這些冗余行的存在可能源于多種原因,例如:
- 數(shù)據(jù)輸入錯(cuò)誤:用戶在手動(dòng)輸入數(shù)據(jù)時(shí),可能不小心多次輸入相同的信息。
- 數(shù)據(jù)導(dǎo)入:從其他系統(tǒng)或文件導(dǎo)入數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)重復(fù)記錄,尤其是在合并多個(gè)數(shù)據(jù)源時(shí)。
- 復(fù)制粘貼:在處理數(shù)據(jù)時(shí),復(fù)制粘貼操作可能導(dǎo)致無意中創(chuàng)建重復(fù)行。
刪除這些重復(fù)行至關(guān)重要,因?yàn)樗鼈儾粌H會(huì)干擾數(shù)據(jù)分析,還可能導(dǎo)致錯(cuò)誤的決策和結(jié)論。通過清理重復(fù)數(shù)據(jù),可以提高數(shù)據(jù)的準(zhǔn)確性和整潔性,從而使后續(xù)的分析工作更加高效。這篇文章將探討如何使用C# 實(shí)現(xiàn)快速刪除Excel表格中的重復(fù)行,主要涵蓋內(nèi)容如下:
- C# 刪除Excel工作表中的重復(fù)行
- C# 刪除指定Excel單元格區(qū)域中的重復(fù)行
- C# 基于特定列刪除重復(fù)行
使用工具
要使用 C# 從 Excel 表格中刪除重復(fù)數(shù)據(jù),需要使用合適的Excel文檔處理庫(kù)。本文所使用的庫(kù)是 Spire.XLS for .NET,它支持在.NET應(yīng)用程序中創(chuàng)建和操作Excel 文件,無需安裝Microsoft Excel。
安裝Spire.XLS for .NET
在開始之前,在Package Manager Console中運(yùn)行以下命令從NuGet 安裝 Spire.XLS 庫(kù):
Install-Package Spire.XLS
C# 刪除Excel工作表中的重復(fù)行
重復(fù)行可能會(huì)導(dǎo)致工作表結(jié)構(gòu)混亂,影響數(shù)據(jù)的完整性。Spire.XLS 提供了一種簡(jiǎn)單的方法來檢測(cè)和刪除工作表中的重復(fù)行。
語(yǔ)法
sheet.RemoveDuplicates();
工作原理
該方法會(huì)檢查工作表中的每一行,并比較每行內(nèi)的所有單元格。只有當(dāng)所有單元格的值與另一行完全一致時(shí),該行才會(huì)被視為重復(fù)。第一次出現(xiàn)的行將被保留,而后續(xù)的重復(fù)行將被刪除。
實(shí)現(xiàn)代碼
using Spire.Xls;
namespace RemoveDuplicatesFromWorksheet
{
internal class Program
{
static void Main(string[] args)
{
// 打開 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("測(cè)試.xlsx");
// 獲取所需的工作表(索引從0開始)
Worksheet sheet = workbook.Worksheets[0];
// 從工作表中刪除重復(fù)行
sheet.RemoveDuplicates();
// 保存修改后的文件
workbook.SaveToFile("刪除工作表內(nèi)重復(fù)行.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}
C# 刪除指定Excel單元格區(qū)域中的重復(fù)行
有時(shí),你可能只想清除工作表特定單元格區(qū)域中的重復(fù)行數(shù)據(jù),而不影響其他部分。Spire.XLS 支持指定要?jiǎng)h除重復(fù)項(xiàng)的單元格范圍。
語(yǔ)法
sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn);
參數(shù)
startRow, startColumn, endRow, endColumn: 定義要檢查重復(fù)項(xiàng)的單元格區(qū)域(行列索引從1開始)。
工作原理
該方法會(huì)比較指定單元格區(qū)域內(nèi)的所有行,如果有兩行或多行的每一列的值都完全相同,那么這些行就被認(rèn)為是重復(fù)的,只保留第一次出現(xiàn)的那一行。區(qū)域外的行不會(huì)受到影響,仍然保持原樣。
實(shí)現(xiàn)代碼
using Spire.Xls;
namespace RemoveDuplicateRowsFromCellRange
{
internal class Program
{
static void Main(string[] args)
{
// 打開 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("測(cè)試.xlsx");
// 獲取所需的工作表(索引從0開始)
Worksheet sheet = workbook.Worksheets[0];
// 從特定單元格區(qū)域中刪除重復(fù)行
sheet.RemoveDuplicates(2, 1, 9, 4);
// 保存修改后的文件
workbook.SaveToFile("刪除單元格區(qū)域內(nèi)重復(fù)行.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}C# 基于特定列刪除重復(fù)行
在處理某些特定數(shù)據(jù)集時(shí),您可能只希望根據(jù)特定的關(guān)鍵列來刪除重復(fù)項(xiàng),而忽略其他列的值。
Spire.XLS 提供了另一種 RemoveDuplicates() 方法重載,以支持這種需求。使用此方法,你可以:
- 指定要操作的單元格區(qū)域
- 指明該區(qū)域是否包含標(biāo)題行
- 選擇用于比較重復(fù)的列
語(yǔ)法
sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn, bool hasHeaders, int[] columnOffsets);
參數(shù)
- startRow, startColumn, endRow, endColumn: 定義要檢查重復(fù)數(shù)據(jù)的單元格區(qū)域(行列索引從1開始)。
- hasHeaders: 判定第一行是否為標(biāo)題行。如果為 true,則第一行將不參與比較。
- columnOffsets: 相對(duì)于 startColumn 的偏移數(shù)組,指定用于比較的列,例如0表示指定區(qū)域中的第一列。
工作原理
該方法在刪除重復(fù)行時(shí),僅考慮用戶指定的某些列。如果多行在這些指定列中的值完全相同,則只保留第一行,其他重復(fù)的行將被刪除。這種做法尤其適用于需要根據(jù)特定標(biāo)識(shí)(如客戶 ID 或電子郵件)來確保數(shù)據(jù)唯一性的場(chǎng)景。
實(shí)現(xiàn)代碼
using Spire.Xls;
namespace RemoveDuplicateRows
{
internal class Program
{
static void Main(string[] args)
{
// 打開 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("測(cè)試.xlsx");
// 獲取所需的工作表(索引從0開始)
Worksheet sheet = workbook.Worksheets[0];
// 定義要檢查重復(fù)行的區(qū)域
int startRow = 2;
int startColumn = 1;
int endRow = 9;
int endColumn = 4;
// 判定區(qū)域內(nèi)的第一行是否是標(biāo)題行
bool hasHeaders = false;
// 指定用于比較重復(fù)的列
int[] columnsToCompare = { 1, 2 };
// 在定義的區(qū)域內(nèi)基于指定列刪除重復(fù)行
sheet.RemoveDuplicates(startRow, startColumn, endRow, endColumn, hasHeaders, columnsToCompare);
// 保存修改后的文件
workbook.SaveToFile("基于特定列刪除重復(fù)行.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}RemoveDuplicates 方法快速比較
以下是RemoveDuplicates 幾種方法的快速比較,你可以根據(jù)自己的需求選擇最合適的方法:
方法 | 適用范圍 |
RemoveDuplicates() | 整個(gè)工作表 |
RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn) | 指定單元格區(qū)域 |
RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn, bool hasHeaders, int[] columnOffsets) | 基于特定列 |
以上就是使用C#實(shí)現(xiàn)快速刪除Excel工作表中重復(fù)行數(shù)據(jù)的全部?jī)?nèi)容。
到此這篇關(guān)于使用C#刪除Excel表格中的重復(fù)行數(shù)據(jù)的代碼詳解的文章就介紹到這了,更多相關(guān)C#刪除Excel重復(fù)行數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WPF彈出右鍵菜單時(shí)判斷鼠標(biāo)是否選中該項(xiàng)
這篇文章介紹了WPF彈出右鍵菜單時(shí)判斷鼠標(biāo)是否選中該項(xiàng)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
DevExpress實(shí)現(xiàn)TreeList向上遞歸獲取符合條件的父節(jié)點(diǎn)
這篇文章主要介紹了DevExpress實(shí)現(xiàn)TreeList向上遞歸獲取符合條件的父節(jié)點(diǎn),需要的朋友可以參考下2014-08-08
WinForm中實(shí)現(xiàn)picturebox自適應(yīng)圖片大小的方法
這篇文章主要介紹了WinForm中實(shí)現(xiàn)picturebox自適應(yīng)圖片大小的方法,涉及pictureBox控件相關(guān)屬性設(shè)置技巧,需要的朋友可以參考下2017-05-05
unity 如何判斷鼠標(biāo)是否在哪個(gè)UI上(兩種方法)
這篇文章主要介紹了unity 判斷鼠標(biāo)是否在哪個(gè)UI上的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04

