使用C#自动化生成Excel单元格数据验证

 更新时间:2025年09月28日 08:45:20   作者:Eiceblue  
在日常报表开发中,Excel 的数据准确性和可控性与格式美观同样重要,本文将演示如何在 同一个工作表中 设置 下拉列表、数值范围、日期区间、文本长度、自定义公式和输入提示,有需要的小伙伴可以了解下

在日常报表开发中,Excel 的数据准确性和可控性与格式美观同样重要。通过合理设置数据验证,可以防止输入错误、约束填报规则,从而提升数据的可靠性和规范性。

相比手动设置验证规则,使用 C# 程序自动化生成 Excel 数据验证 不仅能提高效率,还能保证规则统一。本文演示如何在 同一个工作表中 设置 下拉列表、数值范围、日期区间、文本长度、自定义公式和输入提示,并结合实际业务场景帮助你理解数据验证的作用。

本文使用的方法基于 Free Spire.XLS for .NET。安装方式(NuGet)如下:

1. 初始化工作簿和工作表

using Spire.Xls;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "员工信息录入";

操作说明

这里新建了一个 Excel 文件并获取第一个工作表,命名为“员工信息录入”。所有验证规则都会集中展示在这个表中,保证操作有条理。

2. 下拉列表验证(部门选择)

在实际业务中,员工部门字段通常是固定的几个选项,例如“人事部”“财务部”“技术部”“市场部”。通过下拉列表验证,可以避免用户随意输入错误部门名称。

// 部门列表
sheet.Range["A1"].Text = "可选部门:";
sheet.Range["A2"].Text = "人事部";
sheet.Range["A3"].Text = "财务部";
sheet.Range["A4"].Text = "技术部";
sheet.Range["A5"].Text = "市场部";

// 员工录入区
sheet.Range["C1"].Text = "所属部门:";
CellRange deptCell = sheet.Range["C2"];

deptCell.DataValidation.AllowType = CellDataType.Formula;
// 设置下拉列表数据源
deptCell.DataValidation.DataRange = sheet.Range["A2:A5"];
// 也可直接设置列表内容
//deptCell.DataValidation.Values = ["人事部", "财务部", "技术部", "市场部"];
deptCell.DataValidation.ShowError = true;
deptCell.DataValidation.AlertStyle = AlertStyleType.Stop;
deptCell.DataValidation.ErrorTitle = "输入错误";
deptCell.DataValidation.ErrorMessage = "请从下拉列表中选择部门!";

// 输入提示
deptCell.DataValidation.ShowInput = true;
deptCell.DataValidation.InputTitle = "选择部门";
deptCell.DataValidation.InputMessage = "请从固定部门列表中选择。";

使用场景:避免部门名称不统一(如“技术”“技术部”混用)。

保存文件后效果:

3. 数值验证(员工年龄)

员工年龄一般处于一定范围内,比如 18 到 60 岁。我们可以通过数值验证来限制输入。

sheet.Range["D1"].Text = "员工年龄 (18-60):";
CellRange ageCell = sheet.Range["D2"];

ageCell.DataValidation.AllowType = CellDataType.Integer;
ageCell.DataValidation.CompareOperator = ValidationComparisonOperator.Between;
ageCell.DataValidation.Formula1 = "18";
ageCell.DataValidation.Formula2 = "60";
ageCell.DataValidation.ShowError = true;
ageCell.DataValidation.ErrorMessage = "请输入 18 到 60 之间的整数!";

使用场景:保证录入的年龄数据合理,不会出现“5 岁员工”或“100 岁员工”的异常数据。

保存文件后效果:

4. 日期验证(入职日期)

企业通常要求员工入职日期在某一合理区间内。例如,录入表只允许选择 2023 年内的入职日期。

sheet.Range["E1"].Text = "入职日期 (2023年):";
CellRange hireDateCell = sheet.Range["E2"];

hireDateCell.DataValidation.AllowType = CellDataType.Date;
hireDateCell.DataValidation.CompareOperator = ValidationComparisonOperator.Between;
hireDateCell.DataValidation.Formula1 = "2023-01-01";
hireDateCell.DataValidation.Formula2 = "2023-12-31";
hireDateCell.DataValidation.ShowError = true;
hireDateCell.DataValidation.ErrorMessage = "请输入 2023 年的有效日期!";

使用场景:确保录入的入职时间不会超出考勤和人事系统设定范围。

保存文件后效果:

5. 文本长度验证(工号)

工号通常有固定的位数,例如必须是 6 位字符。通过文本长度验证可以保证工号录入规范。

sheet.Range["F1"].Text = "工号 (6位):";
CellRange idCell = sheet.Range["F2"];

idCell.DataValidation.AllowType = CellDataType.TextLength;
idCell.DataValidation.CompareOperator = ValidationComparisonOperator.Equal;
idCell.DataValidation.Formula1 = "6";
idCell.DataValidation.ShowError = true;
idCell.DataValidation.ErrorMessage = "工号必须为 6 位字符!";

使用场景:避免工号录入长度不一导致系统识别异常。

保存文件后效果:

6. 自定义公式验证(工资 > 基本工资)

在工资表中,往往需要确保“实发工资”大于“基本工资”。我们可以使用自定义公式来实现这种逻辑。

sheet.Range["G1"].Text = "基本工资:";
sheet.Range["G2"].NumberValue = 4000;
sheet.Range["H1"].Text = "实发工资:";
CellRange salaryCell = sheet.Range["H2"];

salaryCell.DataValidation.AllowType = CellDataType.Formula;
salaryCell.DataValidation.Formula1 = "=H2>G2";
salaryCell.DataValidation.ShowError = true;
salaryCell.DataValidation.ErrorMessage = "实发工资必须大于基本工资!";

使用场景:避免出现“实发工资比基本工资还低”的错误数据。

保存文件后效果:

7. 保存文件

完成所有验证规则设置后,将结果保存为 Excel 文件:

// 自动对齐并保存
sheet.Range.Style.Font.FontName = "微软雅黑";
sheet.Range.Style.Font.Size = 12f;
sheet.Range.AutoFitColumns();
workbook.SaveToFile("DataValidation.xlsx", ExcelVersion.Version2016);

关键类与属性总结

类 / 属性说明
Workbook表示 Excel 工作簿,用于创建和保存文件
Worksheet表示 Excel 工作表,所有操作都基于该对象
CellRange表示单元格或单元格区域
DataValidation用于设置单元格数据验证规则
AllowType指定验证类型(整数、日期、文本长度、自定义公式等)
CompareOperator指定比较运算符(Between、Equal 等)
Formula1 / Formula2用于设置验证条件的参数值
ShowError是否显示错误提示
ErrorMessage错误提示信息
ShowInput是否显示输入提示
InputMessage输入提示信息

总结

本文通过 Spire.XLS for .NET 演示了如何在一张 Excel 工作表中设置多种类型的数据验证,包括下拉列表、数值范围、日期区间、文本长度、自定义公式以及输入提示。通过这些验证规则,可以有效减少错误输入,统一数据标准,提升报表质量。如果你正在开发人事、财务或其他需要批量数据录入的系统,使用 C# 自动化设置 Excel 数据验证会大大提高效率和准确性。

以上就是使用C#自动化生成Excel单元格数据验证的详细内容,更多关于C# Excel单元格数据验证的资料请关注脚本之家其它相关文章!

相关文章

  • C# TextBox数据绑定的方法

    C# TextBox数据绑定的方法

    这篇文章主要为大家详细介绍了C# TextBox数据绑定的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • c#基数排序Radix sort的实现方法

    c#基数排序Radix sort的实现方法

    这篇文章主要介绍了c#基数排序Radix sort的实现方法,有需要的朋友可以参考一下
    2014-01-01
  • C#生成带二维码的专属微信公众号推广海报实例代码

    C#生成带二维码的专属微信公众号推广海报实例代码

    这篇文章主要给大家介绍了关于利用C#如何生成带二维码的专属微信公众号推广海报的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们一起来看看吧
    2018-12-12
  • 详细聊聊C#的并发机制优秀在哪

    详细聊聊C#的并发机制优秀在哪

    并发其实是一个很泛的概念,字面意思就是"同时做多件事",不过方式有所不同,下面这篇文章主要给大家介绍了关于C#并发机制的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • C#使用Spire.XLS高效生成Excel图表实现数据可视化

    C#使用Spire.XLS高效生成Excel图表实现数据可视化

    在当今数据驱动的时代,无论是业务分析师、数据科学家还是软件开发者,都离不开对数据的解读与可视化,本文将深入探讨如何利用C#和一款强大的第三方库,实现Excel图表的自动化生成,感兴趣的小伙伴可以了解下
    2025-12-12
  • C#中DateTime的时间加减法操作小结

    C#中DateTime的时间加减法操作小结

    本文主要介绍了C#中DateTime的时间加减法操作小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C#实现彻底删除文件的方法

    C#实现彻底删除文件的方法

    这篇文章主要介绍了C#实现彻底删除文件的方法,可实现类似360粉碎文件的效果,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • 基于WPF实现筛选下拉多选控件

    基于WPF实现筛选下拉多选控件

    这篇文章主要为大家详细介绍了如何基于WPF实现简单的筛选下拉多选控件,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2023-04-04
  • C#实现Excel文件转Markdown表格

    C#实现Excel文件转Markdown表格

    在撰写技术文档或整理数据时,我们常常需要将 Excel 表格转为 Markdown 格式,本文将展示如何使用 C# 和 Spire.XLS 库,通过一行核心方法快速将 Excel 文件保存为 Markdown 文件,感兴趣的小伙伴可以了解下
    2026-03-03
  • WPF开发之UniformGrid和ItemsControl的应用详解

    WPF开发之UniformGrid和ItemsControl的应用详解

    为了简化开发,WPF提供了UniformGrid布局和ItemsControl容器,本文以一个简单的小例子,简述如何在WPF开发中应用UniformGrid和ItemsControl实现均匀的布局,希望对大家有所帮助
    2024-01-01

最新评论