The value passed into the format() function is coming from an XML file and has never been coerced. Therefore, when checking is_int($value), the check always returns false - because it's a string. Changing the check fixes the issue and Spout now correctly parses large numbers.