當處理 Excel 試算表時,跨多個版本追蹤變更變得對資料驗證、稽核以及協作工作流程至關重要。手動檢查容易出錯且無法擴展,尤其是面對包含數百列與複雜公式的大型活頁簿。GroupDocs.Comparison for .NET 讓您能以程式方式比較 Excel 試算表,提供進階的逐格分析、自訂樣式以及完整的變更追蹤。本指南示範如何使用 GroupDocs.Comparison 強大的 API,實作精密的 Excel 比較工作流程。
什麼是 Excel 試算表比較?
Excel 試算表比較會在儲存格層級辨識並突顯兩個 Excel 活頁簿之間的差異。與將試算表視為二進位檔案的文字差異工具不同,GroupDocs.Comparison 能理解 Excel 格式結構,偵測到:
- 儲存格插入:新加入的儲存格或列
- 儲存格刪除:被移除的儲存格或列
- 儲存格修改:值、公式或格式的變更
- 結構變更:工作表、欄或列的新增或刪除
- 格式差異:樣式、顏色、字型與對齊方式的變更
GroupDocs.Comparison 提供高階的 .NET API,會自動偵測上述差異,並以可自訂的視覺指示器在新活頁簿中呈現。
常見的 Excel 比較使用情境
GroupDocs.Comparison 能處理各種 Excel 比較情境:
- 財務稽核:比較預算版本、財務報表與會計試算表
- 資料驗證:在遷移或系統升級期間驗證資料正確性
- 版本控制:追蹤多個試算表版本的變更
- 合規報告:為法規遵循稽核變更
- 協作編輯:審查多位團隊成員的變更
- 報告產生:為利害關係人建立變更摘要
- CI/CD 管線:在基於 Excel 的工作流程中自動偵測變更
所有這些情境皆可受益於 GroupDocs.Comparison 的儲存格層級偵測與可自訂的輸出格式。
GroupDocs.Comparison Excel 比較功能
GroupDocs.Comparison for .NET 提供完整的 Excel 試算表比較功能:
Note: The complete working project with all code examples is available in the GitHub repository. You can clone, run, and customize the examples to suit your needs.
逐格分析
GroupDocs.Comparison 執行細緻的儲存格層級比較,精確偵測插入、刪除與修改。API 能理解 Excel 的結構,包括公式、格式與中繼資料。
自訂樣式選項
GroupDocs.Comparison 的 StyleSettings 類別允許您自訂不同變更類型的視覺外觀:
- InsertedItemStyle:自訂新加入儲存格的外觀
- DeletedItemStyle:自訂被刪除儲存格的樣式
- ChangedItemStyle:自訂已修改儲存格的格式
- 字體顏色、粗體、斜體、底線:完整的格式控制
摘要頁面產生
GroupDocs.Comparison 可自動產生摘要頁面,列出所有偵測到的變更,讓您在不必逐格檢查的情況下快速掌握修改概況。
可見性控制
GroupDocs.Comparison 提供細緻的控制,決定比較結果中顯示哪些內容:
- ShowInsertedContent:顯示或隱藏插入的儲存格
- ShowDeletedContent:顯示或隱藏刪除的儲存格
- LeaveGaps:保留文件結構,為刪除的內容留下空白
多格式支援
GroupDocs.Comparison 支援 Excel 格式(XLSX、XLS),同時也支援 Word、PDF、PowerPoint、影像等。API 會自動處理各格式的最佳化。
原始檔與目標檔
以下圖片顯示原始與目標 Excel 檔案。乍看之下它們似乎相同,但 GroupDocs.Comparison 會在儲存格層級偵測出細微差異。
原始 Excel 試算表,包含原始資料。
目標 Excel 試算表,已進行需要辨識的修改。
程式碼範例:使用 GroupDocs.Comparison 進行 Excel 比較
此範例示範 GroupDocs.Comparison 的 Excel 比較功能:
步驟 1:基本 Excel 比較
首先,使用預設設定執行基本比較:
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
private static void BasicComparison(string sourcePath, string targetPath, string resultPath)
{
EnsureFileExists(sourcePath, "source Excel file");
EnsureFileExists(targetPath, "target Excel file");
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath);
}
Console.WriteLine("Basic comparison completed.");
}
此程式碼使用 GroupDocs.Comparison 的 Comparer 類別,以預設樣式比較兩個 Excel 檔案,並自動突顯所有差異。
基本比較結果,顯示所有偵測到的差異,使用預設格式。插入的儲存格以一種顏色標示,刪除的儲存格以另一種顏色標示,修改的儲存格則以第三種顏色標示。
基本比較提供完整的變更概覽,適合初步分析與快速變更偵測。
步驟 2:使用自訂格式的比較
接著,套用自訂樣式並產生摘要頁面:
private static void StyledComparison(string sourcePath, string targetPath, string resultPath)
{
EnsureFileExists(sourcePath, "source Excel file");
EnsureFileExists(targetPath, "target Excel file");
var compareOptions = new CompareOptions
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Green,
IsUnderline = true,
IsBold = true,
IsItalic = true
},
DeletedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Brown,
IsUnderline = true,
IsBold = true,
IsItalic = true
},
ChangedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Firebrick,
IsUnderline = true,
IsBold = true,
IsItalic = true
},
GenerateSummaryPage = true,
ShowDeletedContent = false,
};
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath, compareOptions);
}
Console.WriteLine("Styled comparison completed (changes highlighted, summary page generated).");
}
此範例示範 CompareOptions 與 StyleSettings 類別的自訂格式。插入的儲存格以綠色顯示,刪除的儲存格以棕色顯示,變更的儲存格以磚紅色顯示,且皆加粗、斜體與底線。
步驟 3:可見性控制
GroupDocs.Comparison 提供可見性控制,以便進行聚焦分析:
// 隱藏插入內容 - 專注於刪除與修改
private static void HideInsertedContentComparison(string sourcePath, string targetPath, string resultPath)
{
var compareOptions = new CompareOptions
{
ShowInsertedContent = false
};
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath, compareOptions);
}
}
// 隱藏刪除內容 - 專注於新增與修改
private static void HideDeletedContentComparison(string sourcePath, string targetPath, string resultPath)
{
var compareOptions = new CompareOptions
{
ShowDeletedContent = false
};
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath, compareOptions);
}
}
// 為刪除內容保留空白 - 保持文件結構
private static void LeaveGapsComparison(string sourcePath, string targetPath, string resultPath)
{
var compareOptions = new CompareOptions
{
LeaveGaps = true
};
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath, compareOptions);
}
}
// 同時隱藏插入與刪除內容 - 僅顯示修改
private static void HideBothContentComparison(string sourcePath, string targetPath, string resultPath)
{
var compareOptions = new CompareOptions
{
ShowInsertedContent = false,
ShowDeletedContent = false,
LeaveGaps = true
};
using (var comparer = new Comparer(sourcePath))
{
comparer.Add(targetPath);
comparer.Compare(resultPath, compareOptions);
}
}
以上範例展示 GroupDocs.Comparison 靈活的可見性控制,讓您依需求自訂比較輸出。
比較結果:隱藏內容
GroupDocs.Comparison 能隱藏特定變更類型,以聚焦分析。以下分別示範隱藏插入與刪除內容的結果。
隱藏插入內容的比較結果,聚焦於刪除與修改。
隱藏刪除內容的比較結果,聚焦於插入與修改。
比較結果:保留空白
當需要保留文件結構時,GroupDocs.Comparison 可在刪除內容的位置留下空白。
保留空白的比較結果,維持原始文件的結構與版面配置。
比較結果:自訂樣式比較
最後,展示使用自訂格式與摘要頁面的完整比較結果。
自訂樣式比較結果:插入為綠色、刪除為棕色、修改為磚紅色,並附有摘要頁面供快速檢閱。
為何 GroupDocs.Comparison 優於手動與基本方法
手動比較的限制
手動檢查 Excel 需要大量時間且易出錯,尤其是大型試算表。GroupDocs.Comparison 可在數秒內完成比較,且 100% 正確。
Excel 內建功能的限制
Excel 的「追蹤變更」功能有以下重大限制:
- 需要共用活頁簿:無法在一般活頁簿使用
- 無自動化:必須手動啟用與檢視
- 格式受限:僅提供基本變更指示
- 無程式介面:無法整合至自動化工作流程
- 版本衝突:多版本管理困難
GroupDocs.Comparison 以程式化 API 解決上述問題,支援任意 Excel 檔案,且可無縫整合至自動化流程。
文字差異工具的失敗
傳統文字差異工具無法正確處理 Excel 檔案,原因如下:
- 將檔案視為二進位:不理解 Excel 結構
- 忽略格式:不處理儲存格樣式、顏色與格式
- 忽視公式:無法解析 Excel 公式與計算
- 缺乏結構感知:無法偵測工作表、列或欄的變更
- 忽略中繼資料:不考慮 Excel 的屬性與中繼資料
GroupDocs.Comparison 了解 Excel 格式,能在多層面偵測變更:儲存格值、公式、格式、結構與中繼資料。
GroupDocs.Comparison 的優勢
GroupDocs.Comparison 提供完整的 Excel 比較功能:
- 格式感知比較:理解 Excel 結構與語意
- 儲存格級精確度:逐格偵測變更
- 自訂樣式:完整控制變更的視覺呈現
- 摘要頁面:自動產生變更摘要
- 可見性控制:顯示或隱藏特定變更類型
- 程式化 API:可整合至自動化工作流程
- 多格式支援:同時比較 Word、PDF、PowerPoint 等
真實案例:Excel 比較情境
財務稽核工作流程
GroupDocs.Comparison 可自動化財務稽核:
// 使用自訂樣式比較預算版本
var auditOptions = new CompareOptions
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Red, // 突顯新費用
IsBold = true
},
ChangedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Orange, // 突顯修改項目
IsBold = true
},
GenerateSummaryPage = true
};
using (var comparer = new Comparer("budget_v1.xlsx"))
{
comparer.Add("budget_v2.xlsx");
comparer.Compare("audit_report.xlsx", auditOptions);
}
此工作流程會自動產生稽核報告,突顯預算變更,使財務審查更有效率且更精確。
資料遷移驗證
GroupDocs.Comparison 可在遷移過程中驗證資料正確性:
// 比較來源與遷移後的資料
var validationOptions = new CompareOptions
{
ShowInsertedContent = false, // 專注於遺失的資料
ShowDeletedContent = false, // 專注於多餘的資料
LeaveGaps = true // 保留結構
};
using (var comparer = new Comparer("source_data.xlsx"))
{
comparer.Add("migrated_data.xlsx");
comparer.Compare("validation_report.xlsx", validationOptions);
}
此方法透過辨識來源與遷移後資料之間的差異,確保資料完整性。
協作編輯審查
GroupDocs.Comparison 可追蹤協作環境中的變更:
// 審查多位貢獻者的變更
var reviewOptions = new CompareOptions
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Green,
IsBold = true
},
DeletedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Red,
IsStrikethrough = true
},
ChangedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Blue,
IsUnderline = true
},
GenerateSummaryPage = true
};
using (var comparer = new Comparer("original.xlsx"))
{
comparer.Add("collaborative_version.xlsx");
comparer.Compare("review_report.xlsx", reviewOptions);
}
此工作流程提供所有變更的清晰視覺指示,讓協作審查更為順暢。
進階 GroupDocs.Comparison 功能
授權管理
GroupDocs.Comparison 於正式環境需使用授權:
private static void ApplyLicense()
{
string licensePath = "path to your license file";
License license = new License();
license.SetLicense(licensePath);
}
在執行比較前套用授權,以啟用完整功能。未授權時,GroupDocs.Comparison 會以評估模式運作,功能受限。
錯誤處理
GroupDocs.Comparison 提供穩健的錯誤處理機制:
private static void EnsureFileExists(string path, string description)
{
if (!File.Exists(path))
{
throw new FileNotFoundException($"The {description} was not found. Path: {path}", path);
}
}
在比較前驗證檔案是否存在,可避免執行時錯誤並提供清晰的錯誤訊息。
批次處理
GroupDocs.Comparison 支援對多個 Excel 檔案進行批次處理:
var excelFiles = Directory.GetFiles("source", "*.xlsx");
var targetFiles = Directory.GetFiles("target", "*.xlsx");
foreach (var sourceFile in excelFiles)
{
var fileName = Path.GetFileName(sourceFile);
var targetFile = Path.Combine("target", fileName);
if (File.Exists(targetFile))
{
using (var comparer = new Comparer(sourceFile))
{
comparer.Add(targetFile);
comparer.Compare(Path.Combine("output", $"comparison_{fileName}"));
}
}
}
此方式可自動化整個目錄的 Excel 檔案比較。
何時使用 GroupDocs.Comparison
GroupDocs.Comparison 適用於:
- 企業應用程式:文件管理與版本控制系統
- 金融系統:預算追蹤、稽核與報告
- 資料遷移工具:驗證與核對工作流程
- 協作平台:變更追蹤與審查系統
- CI/CD 管線:自動化文件變更偵測
- 合規系統:法規稽核與報告
- 報告工具:自動產生變更摘要
Excel 比較最佳實踐
1. 選擇適當的可見性設定
根據分析需求選擇可見性控制:
- 完整比較:顯示所有變更,進行全面審查
- 聚焦分析:隱藏特定變更類型,聚焦於相關修改
- 結構保留:使用
LeaveGaps保持文件版面
2. 為清晰度自訂樣式
為不同變更類型使用明顯的顏色與格式:
- 插入:綠色或藍色表示新內容
- 刪除:紅色或棕色表示移除內容
- 修改:橙色或黃色表示變更內容
3. 產生摘要頁面
啟用摘要頁面,以快速概覽變更:
compareOptions.GenerateSummaryPage = true;
摘要頁面讓您在不逐格檢查的情況下,快速掌握所有變更。
4. 驗證輸入檔案
比較前務必驗證檔案是否存在:
EnsureFileExists(sourcePath, "source Excel file");
EnsureFileExists(targetPath, "target Excel file");
可避免執行時錯誤並提供明確訊息。
5. 高效處理大型檔案
對於大型 Excel 檔案,建議:
- 以批次方式處理
- 使用適當的可見性設定以減少輸出大小
- 如非必要,關閉摘要頁面以提升效能
結論
GroupDocs.Comparison for .NET 為 Excel 試算表比較提供強大功能,具備進階的逐格分析。透過 API,您可以以程式方式執行比較,並自訂樣式、產生摘要頁面與靈活的可見性控制,完美符合財務稽核、資料驗證、版本控制與協作工作流程等需求。
GroupDocs.Comparison 的主要優勢:
- 儲存格級精確度:逐格偵測變更
- 自訂樣式:完整控制變更的視覺呈現
- 摘要頁面:自動產生變更概覽
- 可見性控制:顯示或隱藏特定變更類型
- 程式化 API:可整合至自動化工作流程
- 多格式支援:同時比較 Excel、Word、PDF、PowerPoint 等
- 適合正式環境:具備健全的錯誤處理與檔案驗證
使用 GroupDocs.Comparison,您可以將 Excel 比較從手動檢查轉變為自動化、可擴展的流程,為企業工作流程提供準確且視覺清晰的變更追蹤。
參考資訊
下載免費試用
您可從 releases page 下載 GroupDocs.Comparison 的免費試用版。此外,若想在無限制的情況下測試此函式庫,建議於 GroupDocs Temporary License 取得臨時授權。
使用 GroupDocs.Comparison for .NET,將先進的 Excel 比較功能輕鬆整合至您的應用程式,立即提升文件處理工作流程的效率與準確性!