C# 如何检查单元格值是否为数字

C# 如何检查单元格值是否为数字,c#,excel,vsto,C#,Excel,Vsto,使用Microsoft.Office.Interop.Excel对象读取Excel电子表格的单元格。 我需要找出数字值的格式并相应地应用。 例如,我有19.0000的值,但当它被读取时,Value2将是“19”,但我需要保持它为“19.0000” 有一个NumberFormat属性,它返回我可以使用的格式化字符串,如“0.0000”,但我无法找到如何检查单元格值是否为数字。有一种老套的方法是在开头添加撇号-excel不会尝试格式化它 比如说 var值=19.0000; cell.value=“”

使用Microsoft.Office.Interop.Excel对象读取Excel电子表格的单元格。 我需要找出数字值的格式并相应地应用。 例如,我有19.0000的值,但当它被读取时,Value2将是“19”,但我需要保持它为“19.0000”


有一个NumberFormat属性,它返回我可以使用的格式化字符串,如“0.0000”,但我无法找到如何检查单元格值是否为数字。

有一种老套的方法是在开头添加撇号-excel不会尝试格式化它

比如说
var值=19.0000;

cell.value=“””+值

我将此功能用于此目的:

    public static bool IsValidDecimalNumber(this string s)
    {
        if (string.IsNullOrWhiteSpace(s)) return false; //blank/null strings aren't valid decimal numbers
        return !s.Any(c => !(char.IsDigit(c) || c == '.')) && !(s.Count(c => c == '.') > 1);
    }

编辑:更详细地说,如果为空,则返回false;如果任何数字不是数字或小数点,则返回false;如果有多个小数点,则返回false。否则,它将返回true。

我可能不理解您的问题,但首先使用测试如何:
IsNumeric(cell.Value2)
IsNumeric它是哪个对象方法?抱歉,这是一个VB构造-检查此项:
    public static bool IsValidDecimalNumber(this string s)
    {
        if (string.IsNullOrWhiteSpace(s)) return false; //blank/null strings aren't valid decimal numbers
        return !s.Any(c => !(char.IsDigit(c) || c == '.')) && !(s.Count(c => c == '.') > 1);
    }