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文件,然后創建其他數據有效性類型如日期/時間及文本長度有效性等。
