-谁能指点一下:执行到添加图片的时候提示没有找到成员,请问是什么原因?
BOOL CExport2Excel::InsertPictureWithScale(LPCTSTR lpszImagePath,
int nRow, int nCol,
double dScale,
BOOL bLinkToFile, BOOL bSaveWithDocument)
{
try
{
// 获取活动工作表
CWorksheet worksheet = m_wbExcelSingle.get_ActiveSheet();
// 获取工作表的Shapes集合
CShapes shapes = worksheet.get_Shapes();
// 计算图片位置
CRange range = worksheet.get_Cells();
CRange cell;
cell.AttachDispatch(range.get_Item(_variant_t((long)nRow), _variant_t((long)nCol)).pdispVal, true);
VARIANT varLeft = cell.get_Left();
VARIANT varTop = cell.get_Top();
double dLeft = 0.0, dTop = 0.0;
// 安全提取double值
if (varLeft.vt == VT_R8) dLeft = varLeft.dblVal;
else if (varLeft.vt == VT_R4) dLeft = varLeft.fltVal;
else if (varLeft.vt == VT_I4) dLeft = (double)varLeft.lVal;
if (varTop.vt == VT_R8) dTop = varTop.dblVal;
else if (varTop.vt == VT_R4) dTop = varTop.fltVal;
else if (varTop.vt == VT_I4) dTop = (double)varTop.lVal;
// 使用默认大小并应用缩放
double dWidth = 100.0 * dScale;
double dHeight = 100.0 * dScale;
LPDISPATCH pPictureDispatch = NULL;
// 插入图片
pPictureDispatch = shapes.AddPicture(
lpszImagePath,
bLinkToFile ? -1 : 0,
bSaveWithDocument ? -1 : 0,
dLeft, dTop, dWidth, dHeight);
if (pPictureDispatch != NULL)
{
pPictureDispatch->Release();
return TRUE;
}
}
catch (COleException* e)
{
TCHAR szError[255];
e->GetErrorMessage(szError, 255);//没有找到成员[]
AfxMessageBox(szError);
e->Delete();
return FALSE;
}
catch (COleDispatchException* e)
{
TCHAR szError[255];
e->GetErrorMessage(szError, 255);
AfxMessageBox(szError);
e->Delete();
return FALSE;
}
catch (...)
{
AfxMessageBox(_T("按比例插入图片时发生未知错误!"));
return FALSE;
}
return FALSE;
}
```c++
LPDISPATCH AddPicture(LPCTSTR Filename, long LinkToFile, long SaveWithDocument,
double Left, double Top, double Width, double Height)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_I4 VTS_I4 VTS_R8 VTS_R8 VTS_R8 VTS_R8 ;
InvokeHelper(0x4a4, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms,
Filename, LinkToFile, SaveWithDocument, Left, Top, Width, Height);
return result;
}
```