0
当我使用OLE将C++中的单元格写入Excel中的单元格时,我得到一个空单元格。无论什么价值被覆盖为空白。它虽然写在正确的单元格中,但看起来范围是正确的。这是我的代码。从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);
当你只是想写一个字符串时使用数组有什么意义吗?请注意[本博客文章](http://blogs.msdn.com/b/eric_carter/archive/2004/05/04/126190.aspx)对于火箭科学,您需要一个二维数组。 –
没有意义,我从https://support.microsoft.com/en-us/kb/216686 –
得到了这个主意@HansPassant,我改成了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); 但仍然相同的结果 –