• C# Excel数据有效性


    C# Excel数据有效性

    在Excel中,我们可以使用数据有效性功能来定义哪些数据可以被输入到工作表的单元格中,例如,限制输入的数据为一定范围内的数字或使用下拉列表来限制用户可选择的数据等。这篇文章主要分享如何使用C#编程的方式来实现Excel的数据有效性功能。

    一、数字有效性

    限制数据输入范围为1-10之间的数字

    1.创建一个新的Excel工作薄并获取它的第一个工作表。

    Workbook wb = new Workbook();
    Worksheet sheet = wb.Worksheets[0];

    2.在单元格B9中输入一些文本并设置格式。

    sheet.Range["B9"].Text = "请输入数字:";
    sheet.Range["B9"].Style.Font.IsBold = true;
    sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;

    3.应用数字有效性到单元格C9。

    sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
    sheet.Range["C9"].DataValidation.Formula1 = "1";
    sheet.Range["C9"].DataValidation.Formula2 = "10";
    sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
    sheet.Range["C9"].DataValidation.InputMessage = "请在该单元格中输入1-10之间的数字.";
    sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;

    效果图:

         

                     

    二、列表有效性

    限制数据输入为下拉列表中的选项

    在单元格B2中输入一些文本并设置格式。

    sheet.Range["B2"].Text = "部门:";
    sheet.Range["B2"].Style.Font.IsBold = true;
    sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;

    应用列表有效性到单元格C2:

    sheet.Range["C2"].DataValidation.Values = new string[] { "销售", "人力资源", "研发", "财务" };
    sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;
    sheet.Range["C2"].Style.KnownColor = ExcelColors.LightGreen1;

    效果图:

     

     

    三、自定义数据有效性错误提示信息/警告

    数据有效性应用到单元格以后,不符合要求的数据将不能成功的在该单元格内输入,如果强行输入不符合要求的数据,Excel将会提示如下错误信息:

    如果不想使用Excel默认的错误提示信息,可以使用如下代码来自定义错误信息的提示内容:

    sheet.Range["C2"].DataValidation.AlertStyle = AlertStyleType.Warning;
    sheet.Range["C2"].DataValidation.ShowError = true;
    sheet.Range["C2"].DataValidation.ErrorTitle = "错误001";
    sheet.Range["C2"].DataValidation.ErrorMessage = "请从下拉列表中选择一个项目";

    效果图:

     

    完整代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Spire.Xls;
    
    namespace Apply_data_validation_to_excel_cells
    {
        class Program
        {
            static void Main(string[] args)
            {
                Workbook wb = new Workbook();
                Worksheet sheet = wb.Worksheets[0];
    
                //应用数字有效性
                sheet.Range["B9"].Text = "请输入数字:";
                sheet.Range["B9"].Style.Font.IsBold = true;
                sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;
    
                sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
                sheet.Range["C9"].DataValidation.Formula1 = "1";
                sheet.Range["C9"].DataValidation.Formula2 = "10";
                sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
                sheet.Range["C9"].DataValidation.InputMessage = "请在该单元格中输入1-10之间的数字.";
                sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;
     
                //应用列表有效性
                sheet.Range["B2"].Text = "部门:";
                sheet.Range["B2"].Style.Font.IsBold = true;
                sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;
    
                sheet.Range["C2"].DataValidation.Values = new string[] { "销售", "人力资源", "研发", "财务" };
                sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;
                sheet.Range["C2"].Style.KnownColor = ExcelColors.LightGreen1;
    
                //自定义数据有效性错误提示信息
                sheet.Range["C2"].DataValidation.AlertStyle = AlertStyleType.Warning;
                sheet.Range["C2"].DataValidation.ShowError = true;
                sheet.Range["C2"].DataValidation.ErrorTitle = "错误001";
                sheet.Range["C2"].DataValidation.ErrorMessage = "请从下拉列表中选择一个项目"; 
    
                //保存文档并重启
                wb.SaveToFile("输出.xlsx",FileFormat.Version2010);
                System.Diagnostics.Process.Start("输出.xlsx");
            }
        }
    }

    总结:

    本文借助了一个免费的dll文件,仅介绍了添加数字和列表有效性的部分,如果感兴趣的话可以下载该dll文件,然后创建其他数据有效性类型如日期/时间及文本长度有效性等。

  • 相关阅读:
    【原理】【重点】异步回调的一些实现策略
    上下文传递
    洋码头全异步服务框架
    秒杀系统架构优化思路
    从urllib2的内存泄露看python的GC python引用计数 对象的引用数 循环引用
    jvisualvm All-in-One Java Troubleshooting Tool
    小心踩雷,一次Java内存泄漏排查实战
    django 请求处理流程 链路追踪
    存储过程
    Dijkstra's algorithm
  • 原文地址:https://www.cnblogs.com/Yesi/p/5757022.html
Copyright © 2020-2023  润新知