我正在使用IDispatch接口的以下函数调用成功地将Hello World!写入excel工作表excel中的单元格。
LPOLESTR ptName = L"Value"; //What is the key for clearing the cell contents?
DISPID dispID;
xlCell->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID);
LCID lcid = GetUserDefaultLCID();
std::wstring cellVal = L"Hello World!";
VARIANT vArgArray[1];
vArgArray[0].vt = VT_BSTR,
vArgArray[0].bstrVal = SysAllocString(cellVal.c_str());
DISPID dispidNamed = DISPID_PROPERTYPUT;
DISPPARAMS dp = {NULL, NULL, 0, 0};
dp.cArgs = 1;
dp.rgvarg = vArgArray;
dp.cNamedArgs = 1;
dp.rgdispidNamedArgs = &dispidNamed;
xlCell->Invoke(
dispID,
IID_NULL,
lcid,
DISPATCH_PROPERTYPUT,
&dp,
NULL,
NULL,
NULL);
现在我需要使用相同的IDispatch
接口(xlCell
)清除单元格
我应该为LPOLESTR
类型变量(GetIDsOfNames
函数中的第二个参数)使用什么值来初始化dispID
,以便通过调用Invoke
成功清除单元格?
1条答案
按热度按时间nhaq1z211#
虽然我找不到用于清除单元格/单元格范围的唯一DISPID,但确实起作用的是修改传递给Invoke()的VARIANT。
我所做的只是将VARIANT从这个
对此
希望能帮上忙。