C# 设置Excel数据有效性

30阅读 0评论2018-05-29 Mia张
分类:C#/.net

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

一、数字有效性

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

操作步骤:

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

  1. Workbook wb = new Workbook();
  2. Worksheet sheet = wb.Worksheets[0];
2.在单元格B9中输入一些文本并设置格式。
  1. sheet.Range["B9"].Text = "请输入数字:";
  2. sheet.Range["B9"].Style.Font.IsBold = true;
  3. sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;
3.应用数字有效性到单元格C9。
  1. sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
  2. sheet.Range["C9"].DataValidation.Formula1 = "1";
  3. sheet.Range["C9"].DataValidation.Formula2 = "10";
  4. sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
  5. sheet.Range["C9"].DataValidation.InputMessage = "请在该单元格中输入1-10之间的数字.";
  6. sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;
效果图:


二、列表有效性

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

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

  1. sheet.Range["B2"].Text = "部门:";
  2. sheet.Range["B2"].Style.Font.IsBold = true;
  3. sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;
应用列表有效性到单元格C2:
  1. sheet.Range["C2"].DataValidation.Values = new string[] { "销售", "人力资源", "研发", "财务" };
  2. sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;
  3. sheet.Range["C2"].Style.KnownColor = ExcelColors.LightGreen1;


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

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


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

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


完整代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Spire.Xls;

  6. namespace Apply_data_validation_to_excel_cells
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Workbook wb = new Workbook();
  13.             Worksheet sheet = wb.Worksheets[0];

  14.             //应用数字有效性
  15.             sheet.Range["B9"].Text = "请输入数字:";
  16.             sheet.Range["B9"].Style.Font.IsBold = true;
  17.             sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;

  18.             sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
  19.             sheet.Range["C9"].DataValidation.Formula1 = "1";
  20.             sheet.Range["C9"].DataValidation.Formula2 = "10";
  21.             sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
  22.             sheet.Range["C9"].DataValidation.InputMessage = "请在该单元格中输入1-10之间的数字.";
  23.             sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;
  24.  
  25.             //应用列表有效性
  26.             sheet.Range["B2"].Text = "部门:";
  27.             sheet.Range["B2"].Style.Font.IsBold = true;
  28.             sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;

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

  32.             //自定义数据有效性错误提示信息
  33.             sheet.Range["C2"].DataValidation.AlertStyle = AlertStyleType.Warning;
  34.             sheet.Range["C2"].DataValidation.ShowError = true;
  35.             sheet.Range["C2"].DataValidation.ErrorTitle = "错误001";
  36.             sheet.Range["C2"].DataValidation.ErrorMessage = "请从下拉列表中选择一个项目";

  37.             //保存文档并重启
  38.             wb.SaveToFile("输出.xlsx",FileFormat.Version2010);
  39.             System.Diagnostics.Process.Start("输出.xlsx");
  40.         }
  41.     }
  42. }

注:这里使用了一个免费控件Free Spire.XLS,使用该控件也可以创建其他数据有效性类型,如日期、时间、文本长度等

文章转载自:http://www.cnblogs.com/Yesi/p/5757022.html
上一篇:C# 创建Excel混合型图表
下一篇:C# 创建Excel数据多级分组