从c++在Excel中写入单元格-没有写入值,单元格是空白的



当我用OLE从c++编写单元格到Excel中的单元格时,我得到一个空单元格。这里的任何值都会被覆盖为空白。它在正确的单元格中写入,因此范围似乎是正确的。这是我的代码。

VARIANT arr;
BSTR val = SysAllocString(L"hello excel world");
_bstr_t(val, false);
arr.vt = VT_ARRAY | VT_VARIANT;
SAFEARRAYBOUND sab[1];
sab[0].lLbound = 1; sab[0].cElements = 1;
arr.parray = SafeArrayCreate(VT_VARIANT, 1, sab);
long indices[] = {1, 1};
SafeArrayPutElement(arr.parray, indices, (void*)&val);
AutoWrap(DISPATCH_PROPERTYPUT, NULL, range, L"Value", 1, arr);

我不明白如何正确地将参数传递给Excel。它需要是一个变体,而不是一个赤裸裸的BSTR:

VARIANT arr;
BSTR val = SysAllocString(L"hello excel world");
_bstr_t(val, false);
arr.vt = VT_ARRAY | VT_VARIANT;
SAFEARRAYBOUND sab[2];
sab[0].lLbound = 1; sab[0].cElements = 1;
sab[1].lLbound = 1; sab[1].cElements = 1;
arr.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
long indices[] = {1, 1};
VARIANT valvariant;
valvariant.vt = VT_BSTR;
valvariant.bstrVal = val;
SafeArrayPutElement(arr.parray, indices, (void*)&valvariant);
AutoWrap(DISPATCH_PROPERTYPUT, NULL, range, L"Value", 1, arr);

相关内容

  • 没有找到相关文章

最新更新