使用 C# .NET 比较 CSV 文件

我们最近在我们的 .NET 应用程序中讨论了如何比较两个 CSV 文件的基本方法。今天,在本文中,我们将进一步学习使用 C# 比较两个以上的 CSV。此外,我们将讨论如何比较受密码保护的 CSV 文件。最后但同样重要的是,如何在 .NET 应用程序中使用 C# 接受和拒绝发现的更改。

以下主题涵盖以下内容:

用于比较 CSV 文件的 .NET API

GroupDocs.Comparison 有它的 .NET API,它允许以各种方式比较 CSV 文件。我们将使用它来比较 .NET 应用程序中的 CSV 文件。它还支持比较两个以上的 CSV 文件、受密码保护的文件、接受和拒绝发现的更改。

您可以从 下载部分 下载 DLL 或 MSI 安装程序,或者通过 NuGet 将其包添加到您的 .NET 应用程序来安装 API。

PM> Install-Package GroupDocs.Comparison

GitHub 上也提供了其功能的运行示例。请访问其 文档API 参考 获取指导。

使用 C# 比较 CSV 文件

我们之前已经讨论了两个 CSV 文件的基本比较。在那里,我们查看了文件比较 C# 源代码、用于比较的示例输入文件和比较输出文件。您可以访问该文章进行基本比较。

使用 C# 比较两个以上的 CSV 文件

如果您有两个以上的 CSV 文件要比较,则无需担心。就像比较两个文件一样简单。您只需要将第三个文件添加到比较器。

以下是使用 C# 比较两个以上 CSV 文件的步骤。

  • 用第一个要比较的 CSV 文件实例化 Comparer 类。
  • 使用适当的添加方法添加第二个 CSV 文件。
  • 同样,使用 Add 方法添加尽可能多的其他 CSV 文件。
  • 最后,调用 Compare 方法获取所有添加的 CSV 文件的比较结果。

以下 C# 源代码比较多个 CSV 文件,并在单独的 CSV 和 HTML 文件中生成比较结果。 HTML 输出文件以不同颜色突出显示更改。

// 使用 C# 比较多个(超过 2 个)CSV 文件

using (Comparer comparer = new Comparer("path/comma-separated-file-1.csv"))
{
    // 添加多个 CSV 文件进行比较
    comparer.Add("path/comma-separated-file-2.csv");
    comparer.Add("path/comma-separated-file-3.csv");
    // ...
    // ...
    comparer.Compare("path/comparison-result.csv");
}

使用 C# 比较受密码保护的 CSV 文件

如果您的 CSV 文件受密码保护,您只需在加载这些文件时提供密码。比较多个受密码保护的 CSV 文件的其余过程没有区别。

以下是使用 C# 比较受密码保护的 CSV 文件的步骤。

  • 使用 LoadOptions 类并通过设置密码来打开 CSV 文件准备加载选项。
  • 在实例化 Comparer 类时加载第一个 CSV 文件进行比较。
  • 使用适当的添加方法添加第二个 CSV 文件。
  • 同样,使用任何 Add 方法添加尽可能多的其他 CSV 文件。
  • 最后,调用 Compare 方法来比较所有添加的 CSV 文件。

以下 C# 源代码比较多个受密码保护的 CSV 文件,并在单独的 CSV 和 HTML 文件中生成比较结果。

// 使用 C# 比较受密码保护的 CSV(逗号分隔值)文件

using (Comparer comparer = new Comparer("path/comma-separated-file-1.csv", new LoadOptions(){ Password = "file1-password" }))
{
    comparer.Add("path/comma-separated-file-2.csv", new LoadOptions(){ Password = "file2-password" });
    comparer.Compare("path/comparison-result.csv");
}

使用 C# 接受或拒绝 CSV 文件的已识别更改

就像 Microsoft Word 的功能一样,您可以在 .NET 应用程序中实现 CSV 文件的跟踪更改选项。文件比较后,您可以接受或拒绝每个已识别的更改。以下是比较 CSV 文件然后接受或拒绝识别的更改的步骤。

  • 使用 Comparer 类加载源并添加目标 CSV 文件。
  • 使用 Compare 方法对加载的文件进行比较。
  • 使用 GetChanges 方法获取已识别的更改。
  • 现在您可以遍历更改并设置每个更改的ComparisonAction。
    • 对于同意的更改,您可以将它们设置为接受。
    • 对于不同意的更改,您可以将它们设置为拒绝。
  • 最后,调用 ApplyChanges 方法以获取具有应用更改的结果文档。

以下 C# 源代码比较两个 CSV 文件,然后相应地接受和拒绝更改。

/*
 * 通过使用 C# 比较 CSV 文件来接受或拒绝已识别的更改
 */
using (Comparer comparer = new Comparer("path/comma-separated-file-1.csv"))
{
    comparer.Add("path/comma-separated-file-2.csv");
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    
    // 拒绝第一个并接受第二个确定的更改。
    changes[0].ComparisonAction = ComparisonAction.Reject;
    changes[1].ComparisonAction = ComparisonAction.Accept;
    comparer.ApplyChanges("path/track-changes-result.csv", new ApplyChangeOptions { Changes = changes, SaveOriginalState = true });
}

获取免费 API 许可证

您可以获得 免费临时许可证 以便在没有评估限制的情况下使用 API。

结论

综上所述,今天我们学习了如何使用 C# 比较两个或多个 CSV 文件。除了比较受密码保护的 CSV 文件外,我们还学会了以编程方式接受和拒绝 .NET 应用程序中已识别的更改。

还有许多其他自定义可以控制比较结果,例如设置比较敏感度、仅显示摘要页面、忽略差距等等。从 文档 中了解这些功能。

您可以开始为各种 支持的文档格式 构建自己的比较应用程序。如有疑问,请通过 论坛 联系我们。

也可以看看