很奇怪的問題,無論我選取多少行多少列的數據,range.get_Value2()返回值作爲COLESafeArray構造函數的參數,(示例代碼中的saOneDim)得到的元素個數總是為16,維數是2。
附上代碼。
wsprintf( szwMatrixBegin, L"B%d", iMatrixRow + 6);
wsprintf( szwMatrixEnd, L"O%d", iMatrixRow + 6);
lpDisp = sheet.get_Range( _variant_t( szwMatrixBegin), _variant_t( szwMatrixEnd) );

range.AttachDispatch( lpDisp); //saOneDim.CreateOneDim( VT_VARIANT, 14, 0);
COleSafeArray saOneDim(range.get_Value2());
有人能指正下麽,先謝過。

解决方案 »

  1.   

    或者是否可以直接讀取get_Value2()的返回值。找了幾個屬性,發現都是返回SafeArray的類型。
      

  2.   

    COleVariant vResult;
    vResult=range.GetValue2();
    然后操作vResult
      

  3.   

    wsprintf( szwMatrixBegin, L"B%d", iMatrixRow + 6);
    wsprintf( szwMatrixEnd, L"O%d", iMatrixRow + 6);B~O 是 14列  后面的行相等,所以是1行吧? 你怎么实现的“不论多少行多少列”的
      

  4.   

    我有改變了代碼去測啊,14行2列,14行1列得出來的COLESafeArray元素個數總是為16,維數是2。
    我已經改用C#做了,又快又好阿。
      

  5.   

    基于VC++的Excel封装库2.0 最新版
    http://download.csdn.net/detail/yeah2000/3576494