EXCEL_Application m_app;
EXCEL_Range m_range;
EXCEL_Workbook m_workbook;
EXCEL_Workbooks m_workbooks;
EXCEL_Worksheet m_worksheet;
EXCEL_Worksheets m_worksheets;
EXCEL_ShapeRange m_shaperange;
EXCEL_Shapes m_shapes;
EXCEL_Shape m_shape;
EXCEL_Window m_window;
EXCEL_Pane m_pane;
EXCEL_Picture m_picture;
EXCEL_Pictures m_pictures;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covTrue((short)TRUE);
COleVariant covFarse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CLSIDFromProgID(L"Excel.Application",&classID);
if (SUCCEEDED(::GetActiveObject(classID,NULL,&Unknown)))
{
m_app.GetScreenUpdating();
Unknown->QueryInterface(IID_IDispatch,(void**)&dispatch);
m_app.AttachDispatch(dispatch,false);
m_app.GetActiveWorkbook();
m_workbooks = m_app.GetWorkbooks(); //得到workbook或者m_workbooks.AttachDispatch(m_app.GetWorkbooks());
m_workbook = m_app.GetActiveWorkbook();
m_window = m_workbook.GetActiveSheet();
m_workbooks.GetApplication(); //在当前excel中嵌
EnumWindows(EnumWindowsProc,0);
if(main_wnd)
{
EnumChildWindows(main_wnd,EnumChildProc,0);
}
m_worksheets = m_workbook.GetWorksheets();//得到worksheets // 或m_worksheets.AttachDispatch(m_workbook.GetWorksheets());
m_worksheet = m_workbook.GetActiveSheet(); //得到当前活跃sheet
m_shapes = m_worksheet.GetShapes(); //从Sheet对象上获得一个Shapes
double Ex_bang = 96.0/72.0;
double Ey_bang = 96.0/72.0;
double widthPoints=(right-left+maxPenWith*2)/Ex_bang; // 96/72==每磅多少像素
double heightPoints=(bottom-top+maxPenWith*2)/Ey_bang;
BookName = m_workbook.GetName();
double xx=(lEmebedPosX-EX1-44-maxPenWith/2)*1.0/Ex_bang; //计算图像相对位置EDF
double yy=(lEmebedPosY-EX2-51-maxPenWith/2)*1.0/Ey_bang;
m_shape = m_shapes.AddPicture(strFileName,false,true,xx,yy,widthPoints,heightPoints);
// (float)m_range.GetLeft().dblVal,(float)m_range.GetTop().dblVal, //添加一个图片
// (float)m_range.GetWidth().dblVal,(float)m_range.GetHeight().dblVal);
float hh = m_shape.GetHeight();
float ww = m_shape.GetWidth();
CString hw;
hw.Format(L"hh = %d, ww == %d",hh,ww);
MessageBox(hw);
m_shape.ZOrder(4); //最顶层显示
m_app.SetVisible(true);
m_app.GetScreenUpdating();
// m_shape.SetLeft(xx); //左上角的坐标点sheet(0,0) (200,200,
// m_shape.SetTop(yy);
m_range.ReleaseDispatch();
m_shape.ReleaseDispatch();
m_shapes.ReleaseDispatch();
m_shaperange.ReleaseDispatch();
m_worksheet.ReleaseDispatch();
m_worksheets.ReleaseDispatch();
m_workbook.ReleaseDispatch();
m_workbooks.ReleaseDispatch();
m_window.ReleaseDispatch();
m_pane.ReleaseDispatch();
m_workbook.Close(covOptional,covOptional,covOptional);//关闭Workbook对象
m_workbooks.Close(); //关闭Workbooks对象
m_app.ReleaseDispatch(); //释放_Application
m_app.Quit(); //退出_Application
m_pPageData->m_PenData.RemoveAll(); //清屏 刷新
RedrawTransparent(1);
return;
}