In AX 2009 SP1 RU8, when importing string values from an Excel-sheet using standard AX functionality; if the value is all numeric and is greater than the maximum number that can be handled by a 32 integer, the value returned is the maximum 32 bit integer value (2147483647).
From line 223 in \Classes\SysDataExcelCOM\readRow method, make the following code change:
case COMVariantType::VT_R8 :
intValue = any2int(value.double());
commonReadWrite.(tmpExcelColumn.ColFieldId) = int2str(intValue);
//commonReadWrite.(tmpExcelColumn.ColFieldId) = int2str(intValue);
commonReadWrite.(tmpExcelColumn.ColFieldId) = int642str(any2int64(value.double()));
Save and compile.
This programming example is for illustration purposes only. Microsoft disclaims all warranties and conditions with regard to use of the programming example for other purposes. Microsoft shall not, at any time, be liable for any special, direct, indirect or consequential damages, whether in an action of contract, negligence or other action arising out of or in connection with the use or performance of the programming example. Nothing herein should be construed as constituting any kind of warranty.