ASP.NET中如何验证Excel上传仅允许输入数值类型值?
验证Excel列数值类型的实现方案
核心思路
针对预算列的数值验证,推荐使用**类型转换尝试(TryParse)**的方式——这种方法安全且能准确判断值是否为合法数值(支持整数、小数)。优先选用decimal.TryParse,因为财务类数值用decimal精度更高,可避免浮点误差。
修改后的代码
将你现有预算列的判断逻辑替换为以下代码:
if (dtExcelRows.Columns[j].ColumnName == "Replacement/New site Net Budget requirement (In Rs/US$)") { string cellValue = Convert.ToString(dtExcelRows.Rows[i][j]).Trim(); if (!string.IsNullOrEmpty(cellValue)) { // 尝试转换为decimal类型,支持整数、小数,用InvariantCulture规避区域格式差异 if (!decimal.TryParse(cellValue, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out _)) { strFlag = strFlag + " " + dtExcelRows.Columns[j].ColumnName + " Only numbers are allowed |"; strInvalidSapID = "1"; strFlagStatus = "No Process"; break; } } }
关键说明
decimal.TryParse:尝试把字符串转为decimal类型,转换成功返回true,失败返回false,不会抛出异常。NumberStyles.Any:允许数值包含正负号、小数点、千位分隔符等常见格式;如果业务不允许千位分隔符,可改为NumberStyles.Number。CultureInfo.InvariantCulture:确保转换不受系统区域设置影响(比如避免部分地区用逗号当小数点导致的识别错误)。- 若仅允许整数(不接受小数),可将
decimal.TryParse替换为int.TryParse或long.TryParse,根据数值范围选择即可。
内容的提问来源于stack exchange,提问作者Nadeem
相关产品推荐
相关产品推荐

