public static bool ConvertToBoolean(object value)
{
object result;
var retVal = XlCall.TryExcel(XlCall.xlCoerce, out result, value, (int)XlType.XlTypeBoolean);
if (retVal == XlCall.XlReturn.XlReturnSuccess)
return (bool)result;
// failed - as a fallback, try to convert to a double
retVal = XlCall.TryExcel(XlCall.xlCoerce, out result, value, (int)XlType.XlTypeNumber);
if (retVal == XlCall.XlReturn.XlReturnSuccess)
return ((double)result != 0.0);
// We give up.
throw new InvalidCastException("Value " + value.ToString() + " could not be converted to Boolean.");
}