使用C#自動(dòng)化生成Excel單元格數(shù)據(jù)驗(yàn)證
在日常報(bào)表開(kāi)發(fā)中,Excel 的數(shù)據(jù)準(zhǔn)確性和可控性與格式美觀同樣重要。通過(guò)合理設(shè)置數(shù)據(jù)驗(yàn)證,可以防止輸入錯(cuò)誤、約束填報(bào)規(guī)則,從而提升數(shù)據(jù)的可靠性和規(guī)范性。
相比手動(dòng)設(shè)置驗(yàn)證規(guī)則,使用 C# 程序自動(dòng)化生成 Excel 數(shù)據(jù)驗(yàn)證 不僅能提高效率,還能保證規(guī)則統(tǒng)一。本文演示如何在 同一個(gè)工作表中 設(shè)置 下拉列表、數(shù)值范圍、日期區(qū)間、文本長(zhǎng)度、自定義公式和輸入提示,并結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景幫助你理解數(shù)據(jù)驗(yàn)證的作用。
本文使用的方法基于 Free Spire.XLS for .NET。安裝方式(NuGet)如下:
1. 初始化工作簿和工作表
using Spire.Xls; Workbook workbook = new Workbook(); Worksheet sheet = workbook.Worksheets[0]; sheet.Name = "員工信息錄入";
操作說(shuō)明:
這里新建了一個(gè) Excel 文件并獲取第一個(gè)工作表,命名為“員工信息錄入”。所有驗(yàn)證規(guī)則都會(huì)集中展示在這個(gè)表中,保證操作有條理。
2. 下拉列表驗(yàn)證(部門選擇)
在實(shí)際業(yè)務(wù)中,員工部門字段通常是固定的幾個(gè)選項(xiàng),例如“人事部”“財(cái)務(wù)部”“技術(shù)部”“市場(chǎng)部”。通過(guò)下拉列表驗(yàn)證,可以避免用戶隨意輸入錯(cuò)誤部門名稱。
// 部門列表 sheet.Range["A1"].Text = "可選部門:"; sheet.Range["A2"].Text = "人事部"; sheet.Range["A3"].Text = "財(cái)務(wù)部"; sheet.Range["A4"].Text = "技術(shù)部"; sheet.Range["A5"].Text = "市場(chǎng)部"; // 員工錄入?yún)^(qū) sheet.Range["C1"].Text = "所屬部門:"; CellRange deptCell = sheet.Range["C2"]; deptCell.DataValidation.AllowType = CellDataType.Formula; // 設(shè)置下拉列表數(shù)據(jù)源 deptCell.DataValidation.DataRange = sheet.Range["A2:A5"]; // 也可直接設(shè)置列表內(nèi)容 //deptCell.DataValidation.Values = ["人事部", "財(cái)務(wù)部", "技術(shù)部", "市場(chǎng)部"]; deptCell.DataValidation.ShowError = true; deptCell.DataValidation.AlertStyle = AlertStyleType.Stop; deptCell.DataValidation.ErrorTitle = "輸入錯(cuò)誤"; deptCell.DataValidation.ErrorMessage = "請(qǐng)從下拉列表中選擇部門!"; // 輸入提示 deptCell.DataValidation.ShowInput = true; deptCell.DataValidation.InputTitle = "選擇部門"; deptCell.DataValidation.InputMessage = "請(qǐng)從固定部門列表中選擇。";
使用場(chǎng)景:避免部門名稱不統(tǒng)一(如“技術(shù)”“技術(shù)部”混用)。
保存文件后效果:

3. 數(shù)值驗(yàn)證(員工年齡)
員工年齡一般處于一定范圍內(nèi),比如 18 到 60 歲。我們可以通過(guò)數(shù)值驗(yàn)證來(lái)限制輸入。
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 = "請(qǐng)輸入 18 到 60 之間的整數(shù)!";
使用場(chǎng)景:保證錄入的年齡數(shù)據(jù)合理,不會(huì)出現(xiàn)“5 歲員工”或“100 歲員工”的異常數(shù)據(jù)。
保存文件后效果:

4. 日期驗(yàn)證(入職日期)
企業(yè)通常要求員工入職日期在某一合理區(qū)間內(nèi)。例如,錄入表只允許選擇 2023 年內(nèi)的入職日期。
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 = "請(qǐng)輸入 2023 年的有效日期!";
使用場(chǎng)景:確保錄入的入職時(shí)間不會(huì)超出考勤和人事系統(tǒng)設(shè)定范圍。
保存文件后效果:

5. 文本長(zhǎng)度驗(yàn)證(工號(hào))
工號(hào)通常有固定的位數(shù),例如必須是 6 位字符。通過(guò)文本長(zhǎng)度驗(yàn)證可以保證工號(hào)錄入規(guī)范。
sheet.Range["F1"].Text = "工號(hào) (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 = "工號(hào)必須為 6 位字符!";
使用場(chǎng)景:避免工號(hào)錄入長(zhǎng)度不一導(dǎo)致系統(tǒng)識(shí)別異常。
保存文件后效果:

6. 自定義公式驗(yàn)證(工資 > 基本工資)
在工資表中,往往需要確保“實(shí)發(fā)工資”大于“基本工資”。我們可以使用自定義公式來(lái)實(shí)現(xiàn)這種邏輯。
sheet.Range["G1"].Text = "基本工資:"; sheet.Range["G2"].NumberValue = 4000; sheet.Range["H1"].Text = "實(shí)發(fā)工資:"; CellRange salaryCell = sheet.Range["H2"]; salaryCell.DataValidation.AllowType = CellDataType.Formula; salaryCell.DataValidation.Formula1 = "=H2>G2"; salaryCell.DataValidation.ShowError = true; salaryCell.DataValidation.ErrorMessage = "實(shí)發(fā)工資必須大于基本工資!";
使用場(chǎng)景:避免出現(xiàn)“實(shí)發(fā)工資比基本工資還低”的錯(cuò)誤數(shù)據(jù)。
保存文件后效果:

7. 保存文件
完成所有驗(yàn)證規(guī)則設(shè)置后,將結(jié)果保存為 Excel 文件:
// 自動(dòng)對(duì)齊并保存
sheet.Range.Style.Font.FontName = "微軟雅黑";
sheet.Range.Style.Font.Size = 12f;
sheet.Range.AutoFitColumns();
workbook.SaveToFile("DataValidation.xlsx", ExcelVersion.Version2016);
關(guān)鍵類與屬性總結(jié)
| 類 / 屬性 | 說(shuō)明 |
|---|---|
| Workbook | 表示 Excel 工作簿,用于創(chuàng)建和保存文件 |
| Worksheet | 表示 Excel 工作表,所有操作都基于該對(duì)象 |
| CellRange | 表示單元格或單元格區(qū)域 |
| DataValidation | 用于設(shè)置單元格數(shù)據(jù)驗(yàn)證規(guī)則 |
| AllowType | 指定驗(yàn)證類型(整數(shù)、日期、文本長(zhǎng)度、自定義公式等) |
| CompareOperator | 指定比較運(yùn)算符(Between、Equal 等) |
| Formula1 / Formula2 | 用于設(shè)置驗(yàn)證條件的參數(shù)值 |
| ShowError | 是否顯示錯(cuò)誤提示 |
| ErrorMessage | 錯(cuò)誤提示信息 |
| ShowInput | 是否顯示輸入提示 |
| InputMessage | 輸入提示信息 |
總結(jié)
本文通過(guò) Spire.XLS for .NET 演示了如何在一張 Excel 工作表中設(shè)置多種類型的數(shù)據(jù)驗(yàn)證,包括下拉列表、數(shù)值范圍、日期區(qū)間、文本長(zhǎng)度、自定義公式以及輸入提示。通過(guò)這些驗(yàn)證規(guī)則,可以有效減少錯(cuò)誤輸入,統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn),提升報(bào)表質(zhì)量。如果你正在開(kāi)發(fā)人事、財(cái)務(wù)或其他需要批量數(shù)據(jù)錄入的系統(tǒng),使用 C# 自動(dòng)化設(shè)置 Excel 數(shù)據(jù)驗(yàn)證會(huì)大大提高效率和準(zhǔn)確性。
以上就是使用C#自動(dòng)化生成Excel單元格數(shù)據(jù)驗(yàn)證的詳細(xì)內(nèi)容,更多關(guān)于C# Excel單元格數(shù)據(jù)驗(yàn)證的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C#使用NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)
- C#調(diào)用OpenXml讀取excel行數(shù)據(jù)
- C#實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel文件
- .NET使用C#導(dǎo)入Excel文件數(shù)據(jù)到數(shù)據(jù)庫(kù)
- C#實(shí)現(xiàn)Excel與DataTable的數(shù)據(jù)互轉(zhuǎn)的代碼示例
- C#中使用Spire.XLS來(lái)操作Excel數(shù)據(jù)的實(shí)現(xiàn)
相關(guān)文章
c#基數(shù)排序Radix sort的實(shí)現(xiàn)方法
這篇文章主要介紹了c#基數(shù)排序Radix sort的實(shí)現(xiàn)方法,有需要的朋友可以參考一下2014-01-01
C#生成帶二維碼的專屬微信公眾號(hào)推廣海報(bào)實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用C#如何生成帶二維碼的專屬微信公眾號(hào)推廣海報(bào)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來(lái)看看吧2018-12-12
詳細(xì)聊聊C#的并發(fā)機(jī)制優(yōu)秀在哪
并發(fā)其實(shí)是一個(gè)很泛的概念,字面意思就是"同時(shí)做多件事",不過(guò)方式有所不同,下面這篇文章主要給大家介紹了關(guān)于C#并發(fā)機(jī)制的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
C#使用Spire.XLS高效生成Excel圖表實(shí)現(xiàn)數(shù)據(jù)可視化
在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,無(wú)論是業(yè)務(wù)分析師、數(shù)據(jù)科學(xué)家還是軟件開(kāi)發(fā)者,都離不開(kāi)對(duì)數(shù)據(jù)的解讀與可視化,本文將深入探討如何利用C#和一款強(qiáng)大的第三方庫(kù),實(shí)現(xiàn)Excel圖表的自動(dòng)化生成,感興趣的小伙伴可以了解下2025-12-12
C#中DateTime的時(shí)間加減法操作小結(jié)
本文主要介紹了C#中DateTime的時(shí)間加減法操作小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
C#實(shí)現(xiàn)Excel文件轉(zhuǎn)Markdown表格
在撰寫技術(shù)文檔或整理數(shù)據(jù)時(shí),我們常常需要將 Excel 表格轉(zhuǎn)為 Markdown 格式,本文將展示如何使用 C# 和 Spire.XLS 庫(kù),通過(guò)一行核心方法快速將 Excel 文件保存為 Markdown 文件,感興趣的小伙伴可以了解下2026-03-03
WPF開(kāi)發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解
為了簡(jiǎn)化開(kāi)發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述如何在WPF開(kāi)發(fā)中應(yīng)用UniformGrid和ItemsControl實(shí)現(xiàn)均勻的布局,希望對(duì)大家有所幫助2024-01-01

