You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:43:17