如何將COleVariant里面的內容提取出來?里面有很多行excel單元格內容資料
debug時己經看到讀到內容了,怎么提取出來?
如下只能取到一個內容,其它的內容要如何提取?
CString strTmp[100];
strTmp[0]=ContentArray.bstrVal;
- ContentArray {???} COleVariant
- tagVARIANT safearray of VARIANT = [1,5](BSTR = 0x01440f34 "ReturnValue",BSTR = 0x01440f6c "UserInput",BSTR = 0x0144822c "ErrorMessage",BSTR = 0x01448264 "ReturnValue",BSTR = 0x0144829c "evm") tagVARIANT
vt 8204 unsigned short
- safearray 0x01440e90 safearray of VARIANT = [1,5](BSTR = 0x01440f34 "ReturnValue",BSTR = 0x01440f6c "UserInput",BSTR = 0x0144822c "ErrorMessage",BSTR = 0x01448264 "ReturnValue",BSTR = 0x0144829c "evm") tagSAFEARRAY *
+ [1,1] BSTR = 0x01440f34 "ReturnValue" tagVARIANT
+ [2,1] BSTR = 0x01440f6c "UserInput" tagVARIANT
+ [3,1] BSTR = 0x0144822c "ErrorMessage" tagVARIANT
+ [4,1] BSTR = 0x01448264 "ReturnValue" tagVARIANT
+ [5,1] BSTR = 0x0144829c "evm" tagVARIANT
uj5u.com熱心網友回復:
參考 COleSafeArray
//sa is of type COleSafeArray with 2 dimensions
//Determine upper bounds for both dimensions
long lNumRows;
long lNumCols;
sa.GetUBound(1, &lNumRows);
sa.GetUBound(2, &lNumCols);
//Display the elements in the SAFEARRAY.
long index[2];
VARIANT val;
//Determine lower bounds for both dimensions
long lowRow, lowCol;
sa.GetLBound(1, &lowRow);
sa.GetLBound(2, &lowCol);
for (long r = lowRow; r <= lNumRows; r++)
{
for (long c = lowCol; c <= lNumCols; c++)
{
index[0] = r;
index[1] = c;
//retrieve each element of the safearray
sa.GetElement(index, &val);
switch (val.vt)
{
case VT_R8:
TRACE(_T("%1.2f\n"), val.dblVal);
break;
case VT_BSTR:
TRACE(_T("%s\n"), (CString)val.bstrVal);
break;
// other cases omitted
case VT_EMPTY:
TRACE(_T("<empty>\n"));
break;
}
}
}
uj5u.com熱心網友回復:
謝謝,我的意思是已經讀到了很多列內容,但是如何把它從contentarray中取出來呢?uj5u.com熱心網友回復:
COleSafeArray都有個建構式接收COleVariant型別的引數……轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/11994.html
標籤:基礎類
上一篇:VS2019類向導中,為何只有MFC類,而沒有ActiveX控制元件中的MFC類
下一篇:MFC大佬來康康叭
