关于EXCEL表格以字符串方式提取时不能提取小数
关于EXCEL表格以字符串形式提取时不能提取小数
------解决思路----------------------
%.15lg
CString ExcelFile::GetCellString(long irow, long icolumn)
{
COleVariant vResult;
CString str;
//字符串
if (already_preload_ == FALSE)
{
CRange range;
range.AttachDispatch(excel_current_range_.get_Item (COleVariant((long)irow),COleVariant((long)icolumn)).pdispVal, true);
vResult =range.get_Value2();
range.ReleaseDispatch();
}
//如果数据已经被整体提取
else
{
long read_address[2];
VARIANT val;
read_address[0] = irow;
read_address[1] = icolumn;
read_array_.GetElement(read_address, &val);
vResult = val;
}
if(vResult.vt == VT_BSTR)
{
str=vResult.bstrVal;
}
//整数
else if (vResult.vt==VT_INT)
{
str.Format("%d",vResult.pintVal);
}
//8字节的数字
else if (vResult.vt==VT_R8) //从表格中不能提取小数,为什么?0.25提出来就是1
{
// float a;
//a = vResult.dblVal;
//char b[50];
//gcvt(vResult.dblVal,8,b);
//str = b;
str.Format("%0.0f",vResult.dblVal);
}
//双精度的数字
//else if (vResult.vt==VT_R8)
//时间格式
else if(vResult.vt==VT_DATE)
{
SYSTEMTIME st;
VariantTimeToSystemTime(vResult.date, &st);
CTime tm(st);
str=tm.Format("%Y-%m-%d");
}
//单元格空的
else if(vResult.vt==VT_EMPTY)
{
str="";
}
return str;
}
------解决思路----------------------
%.15lg