在 Excel 中使用 C# 进行数据验证

在 Excel 中,数据验证确保用户仅在工作表中输入有效数据。在设计表单、收集数据或构建财务模型时,数据验证有助于维护结构并减少用户错误。在这篇文章中,我们将向您展示如何使用 C# 程序化地在 Excel 中应用数据验证。

本文涵盖以下主题:

C# Excel 数据验证库

数据验证确保用户在 Excel 电子表格中输入有效和预期的内容。我们将使用 Aspose.Cells for .NET API 在 Excel 中添加不同类型的数据验证。它提供了一种强大而灵活的方法来定义规则,例如下拉列表、数值范围、日期限制和自定义公式,完全无需 Microsoft Excel。

在您的项目中通过 NuGet 包安装 Aspose.Cells for .NET:

PM> Install-Package Aspose.Cells

然后导入相关的命名空间:

using Aspose.Cells;

在Excel中使用C#创建下拉列表验证

您可以通过在 Excel 中创建下拉列表验证来限制用户输入为预定义选项集。这确保了值的一致性,尤其在表单或模板中非常有用。

按照以下步骤使用 C# 在 Excel 中创建下拉列表:

  1. 创建一个新的 Workbook 对象。
  2. 使用其索引访问第一个 worksheet
  3. 定义验证的目标 CellArea
  4. 访问工作表的验证集合。
  5. 添加一个使用 Add() 方法的新验证。
  6. 将验证类型设置为 ValidationType.List
  7. 定义下拉选项使用 Formula1 属性(以逗号分隔)。
  8. 使用 AddArea() 方法将单元格区域添加到验证中。
  9. 保存工作簿以生成经过验证的 Excel 文件。

这是实现这些步骤的 C# 代码示例:

// 创建一个新的 Excel 工作簿
var workbook = new Workbook();

// 访问工作簿中的第一个工作表
var sheet = workbook.Worksheets[0];

// 定义验证的目标单元格区域(在这种情况下为 A1)
var area = new CellArea
{
    StartRow = 0,     // Row index starts from 0 (Row 1)
    EndRow = 0,       // Apply to a single row
    StartColumn = 0,  // Column index starts from 0 (Column A)
    EndColumn = 0     // Apply to a single column
};

// 访问工作表的验证集合
var validations = sheet.Validations;

// 为指定的单元格区域添加新的验证条目
int index = validations.Add(area);
var validation = validations[index];

// 将验证类型设置为下拉列表
validation.Type = ValidationType.List;

// 定义允许的列表项(以逗号分隔的值)
validation.Formula1 = "Red,Green,Blue";

// 设置单元格被选中时显示的输入消息
validation.InputMessage = "Select a color from the list.";

// 设置如果输入无效数据时显示的错误信息
validation.ErrorMessage = "Only Red, Green, or Blue are allowed.";

// 启用错误消息的显示
validation.ShowError = true;

// 将定义的区域应用于验证
validation.AddArea(area);

// 将工作簿保存到指定的文件路径
workbook.Save("dropdown-validation.xlsx");
在 Excel 中使用 C# 创建下拉列表验证

在 Excel 中使用 C# 创建下拉列表验证

在 C# 中使用 Excel 限制为整数

整个数字验证确保用户在Excel中仅输入有效的整数值,这对于数量字段、年龄输入或预算表格是理想的,因为不接受小数或文本。

我们来假设您想限制一个单元格仅接受1到100之间的数字。如果没有这个规则,用户可能会不小心输入无效的内容,如150或abc,从而导致您的电子表格出现计算错误或逻辑问题。

使用 Aspose.Cells for .NET,您可以在 C# 中以编程方式强制执行此验证规则,而无需在 Excel 中手动配置。

以下代码片段演示了如何限制用户仅输入允许的值:

using Aspose.Cells;

// 创建一个新的 Excel 工作簿
var workbook = new Workbook();

// 访问工作簿中的第一个工作表
var sheet = workbook.Worksheets[0];

// 定义目标单元区域 — B2(第1行,第1列)
var area = new CellArea
{
    StartRow = 1,
    EndRow = 1,
    StartColumn = 1,
    EndColumn = 1
};

// 访问工作表的验证集合
var validations = sheet.Validations;

// 添加一个新的验证并获取其索引
int index = validations.Add(area);

// 通过索引检索验证对象
var validation = validations[index];

// 将验证类型设置为 WholeNumber(仅允许整数)
validation.Type = ValidationType.WholeNumber;

// 将操作符设置为`介于”
validation.Operator = OperatorType.Between;

// 定义有效范围:1 到 100
validation.Formula1 = "1";
validation.Formula2 = "100";

// 设置当输入无效数据时出现的错误消息
validation.ErrorMessage = "Enter a number between 1 and 100.";

// 在验证失败时启用显示错误警报
validation.ShowError = true;

// (如果之前没有使用 Add(area),此步骤是可选的)将区域显式添加到验证中
validation.AddArea(area);

// 将工作簿保存到文件中
workbook.Save("numbers-validation.xlsx");
在C#中使用Excel限制为整数

在 C# 中使用 Excel 限制为整数

在 Excel 中使用 C# 应用日期范围验证

日期验证帮助您确保用户仅输入有效日期。它在计划工具、出勤记录、预订表和任何需要特定范围内日期的情境中都非常有用。

例如,假设您正在构建一个项目调度模板,并希望限制用户仅在2024年内输入日期。允许用户输入超出此范围的日期(例如2023年或2025年)可能会破坏公式或导致记录不一致。

Aspose.Cells for .NET 使得在特定单元格上应用日期验证变得简单,因此用户只能输入符合您标准的日期。

以下代码片段演示了如何确保用户只能输入 2024 年 1 月 1 日至 2024 年 12 月 31 日之间的日期。超出范围的任何内容将触发错误,帮助您在电子表格中维护更干净、更准确的数据。

using Aspose.Cells;

// 创建一个新的 Excel 工作簿
var workbook = new Workbook();

// 访问工作簿中的第一个工作表
var sheet = workbook.Worksheets[0];

// 定义执行验证的单元格区域 — C3(第2行,第2列)
var area = new CellArea
{
    StartRow = 2,
    EndRow = 2,
    StartColumn = 2,
    EndColumn = 2
};

// 访问工作表的验证集合
var validations = sheet.Validations;

// 添加一个新验证并获取其索引
int index = validations.Add(area);

// 检索验证对象
var validation = validations[index];

// 将验证类型设置为日期
validation.Type = ValidationType.Date;

// 将操作符设置为介于(开始和结束日期)
validation.Operator = OperatorType.Between;

// 指定有效的日期范围:2024年1月1日至2024年12月31日
validation.Formula1 = "2024-01-01";
validation.Formula2 = "2024-12-31";

// 设置当日期超出范围时显示的错误消息
validation.ErrorMessage = "Date must be within the year 2024.";

// 启用错误警报显示
validation.ShowError = true;

// 重新应用该区域以确保验证正确绑定
validation.AddArea(area);

// 将工作簿保存到指定路径
workbook.Save("date-validation.xlsx");

在 C# 中使用基于公式的验证在 Excel 中进行验证

有时,简单的下拉菜单或固定的数字范围不足够,特别是当您的规则依赖于其他单元格中的值时。使用基于公式的验证,您可以使用 Excel 风格的公式定义自定义规则。这些规则可以引用其他单元格,并动态评估输入是否有效。例如,您可能想确保单元格 B1 中的值始终大于单元格 A1 中的值。这是在价格比较、评分表或日期序列中常见的场景。

Aspose.Cells for .NET 完全支持此功能,并让您可以像在 Excel 中一样使用自定义公式定义验证。

以下代码示例展示了如何使用 C# 在 Excel 中应用基于公式的验证。

using Aspose.Cells;

// 创建一个新的 Excel 工作簿
var workbook = new Workbook();

// 访问工作簿中的第一个工作表
var sheet = workbook.Worksheets[0];

// 定义验证的单元格区域 — B1 (行 0, 列 1)
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 1,
    EndColumn = 1
};

// 访问工作表验证集合
var validations = sheet.Validations;

// 将新的验证添加到集合中并获取其索引
int index = validations.Add(area);

// 通过索引检索验证对象
var validation = validations[index];

// 将验证类型设置为自定义(用于基于公式的规则)
validation.Type = ValidationType.Custom;

// 设置自定义公式:B1必须大于A1
validation.Formula1 = "=B1>A1";

// 定义在验证失败时显示的错误消息
validation.ErrorMessage = "Value in B1 must be greater than A1.";

// 启用无效输入时错误警报的显示
validation.ShowError = true;

// 添加区域以确保它受到验证的涵盖
validation.AddArea(area);

// 将工作簿保存到指定的文件路径
workbook.Save("formula-validation.xlsx");

使用 C# 在 Excel 中配置输入和错误消息

应用数据验证只是解决方案的一部分。当用户输入不正确的数据时,指导他们同样重要,这就是自定义警报和消息发挥关键作用的地方。

Aspose.Cells for .NET 允许您设置有用的输入消息和错误警报,当用户选择单元格或输入无效数据时,这些消息会出现。这些消息改善了用户体验,减少了困惑,使您的 Excel 模板更专业。

例如,当用户点击一个单元格时,您可以显示一个工具提示,例如

`仅允许值在 1 到 100 之间。”

如果他们输入一个不正确的值,Excel可以显示一个对话框,提示说:

`无效输入:请输入一个介于 1 和 100 之间的数字。”

您还可以通过选择是否完全阻止用户(Stop)、允许他们在警告下继续(Warning)或简单地显示信息消息(Information)来自定义 Excel 对无效输入的响应方式。

按照以下步骤使用 C# 配置验证警报:

  1. 在设置验证规则后,将 InputTitleInputMessage 设置为在用户选择单元格时显示帮助文本。
  2. 定义 ErrorTitleErrorMessage 以解释如果验证失败,发生了什么问题。
  3. 选择一个 AlertStyle — 选项包括 StopWarningInformation
  4. ShowError 设置为 true 以启用验证警报。
  5. 保存工作簿。

这些警报使您的电子表格更加直观和用户友好,特别是在您为他人创建模板以便频繁使用或重用时。

var workbook = new Workbook();
var sheet = workbook.Worksheets[0];

// 设置验证区域 — 应用于单元格 C1
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 2, // Column C = 2
    EndColumn = 2
};

// 添加验证
int index = sheet.Validations.Add(area);
var validation = sheet.Validations[index];

validation.Type = ValidationType.Custom;

// 这个公式总是评估为 FALSE
validation.Formula1 = "=FALSE";

// 设置输入和错误消息
validation.InputTitle = "Input Restricted";
validation.InputMessage = "Try entering anything to see the validation.";
validation.ErrorTitle = "Invalid Input";
validation.ErrorMessage = "You triggered this validation error successfully!";
validation.AlertStyle = ValidationAlertType.Stop;
validation.ShowError = true;
validation.ShowInput = true;

// 对区域应用验证
validation.AddArea(area);

// 保存验证过的工作簿
workbook.Save("D:\\Files\\validated_with_alerts.xlsx");

它们的警报增强了可用性,并明确指导用户输入内容。

在 Excel 中使用 C# 配置输入和错误消息

在 Excel 中使用 C# 配置输入和错误消息

免费试用

获取一个 免费临时许可证,以测试 Aspose.Cells for .NET 的全部功能,而不受任何功能限制。

免费的资源

探索有关 Excel 自动化和验证的更多信息,使用以下资源:

结论

在本文中,我们展示了如何使用 Aspose.Cells for .NET 在 Excel 中实现数据验证。从下拉列表到自定义公式,您可以构建智能且无错误的电子表格,而无需依赖 Excel 本身。

如果您有任何问题或反馈,请随时在我们的 free support forum 上发布。我们很乐意提供帮助!

参见