
在 Excel 中,数据验证确保用户仅在工作表中输入有效数据。在设计表单、收集数据或构建财务模型时,数据验证有助于维护结构并减少用户错误。在这篇文章中,我们将向您展示如何使用 C# 程序化地在 Excel 中应用数据验证。
本文涵盖以下主题:
- C# Excel 数据验证库
- 在 Excel 中使用 C# 创建下拉列表
- 在 Excel 中使用 C# 限制整数输入
- 使用 C# 在 Excel 中进行日期范围验证
- 基于公式的数据验证在 Excel 中
- 在 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 中创建下拉列表:
- 创建一个新的
Workbook对象。 - 使用其索引访问第一个
worksheet。 - 定义验证的目标
CellArea。 - 访问工作表的验证集合。
- 添加一个使用
Add()方法的新验证。 - 将验证类型设置为
ValidationType.List。 - 定义下拉选项使用
Formula1属性(以逗号分隔)。 - 使用
AddArea()方法将单元格区域添加到验证中。 - 保存工作簿以生成经过验证的 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# 创建下拉列表验证
在 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 限制为整数
在 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# 配置验证警报:
- 在设置验证规则后,将
InputTitle和InputMessage设置为在用户选择单元格时显示帮助文本。 - 定义
ErrorTitle和ErrorMessage以解释如果验证失败,发生了什么问题。 - 选择一个
AlertStyle— 选项包括Stop、Warning和Information。 - 将
ShowError设置为true以启用验证警报。 - 保存工作簿。
这些警报使您的电子表格更加直观和用户友好,特别是在您为他人创建模板以便频繁使用或重用时。
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# 配置输入和错误消息
免费试用
获取一个 免费临时许可证,以测试 Aspose.Cells for .NET 的全部功能,而不受任何功能限制。
免费的资源
探索有关 Excel 自动化和验证的更多信息,使用以下资源:
结论
在本文中,我们展示了如何使用 Aspose.Cells for .NET 在 Excel 中实现数据验证。从下拉列表到自定义公式,您可以构建智能且无错误的电子表格,而无需依赖 Excel 本身。
如果您有任何问题或反馈,请随时在我们的 free support forum 上发布。我们很乐意提供帮助!