C# 如何检查单元格值是否为数字
使用Microsoft.Office.Interop.Excel对象读取Excel电子表格的单元格。 我需要找出数字值的格式并相应地应用。 例如,我有19.0000的值,但当它被读取时,Value2将是“19”,但我需要保持它为“19.0000”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=“”
有一个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);
}