Open Excel in VC++ and write data - Page 6
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Page 6 of 6 FirstFirst ... 3456
Results 76 to 78 of 78

Thread: Open Excel in VC++ and write data

  1. #76
    Join Date
    Apr 2002
    Location
    Michigan, USA
    Posts
    860

    Re: Open Excel in VC++ and write data

    Code:
    IDispatch *pXlRange2;
    {  
    VARIANT result;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET, &result, pXlSheet, L"UsedRange", 0);
    pXlRange2 = result.pdispVal;
    AutoWrap(DISPATCH_METHOD,&result,pXlRange2,L"PrintOut",0);
    }
    Verere testudinem! (Fear the turtle)

    Once you can accept the universe as matter expanding into nothing that is something, wearing stripes with plaid comes easy. -Albert Einstein

    Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. -Cicero

  2. #77
    Join Date
    Jul 2007
    Location
    Pune, India
    Posts
    20

    Re: Open Excel in VC++ and write data

    Hi Tom i m inserting the Image at the range specified by the user


    void InsertImage(CString strImagePath, CString strRange)//Image will set within the Range given
    {
    VARIANT result;
    VariantInit(&result);

    VARIANT range;
    range.vt = VT_BSTR;
    range.bstrVal = ::SysAllocString(strRange);
    AutoWrap(DISPATCH_PROPERTYGET, &result, pXlSheet, L"Range", 1, range);
    pXlRange = result.pdispVal;


    //Calculating the top, left, height & width of the Range
    unsigned short vals;
    vals=(unsigned short)0x0000007e;
    double dTop,dLeft,dWidth,dHeight;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET,&result,pXlRange,L"Top",0);
    dTop = result.dblVal;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET,&result,pXlRange,L"Left",0);
    dLeft = result.dblVal;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET,&result,pXlRange,L"Width",0);
    dWidth = result.dblVal;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET,&result,pXlRange,L"Height",0);
    dHeight = result.dblVal;

    IDispatch *pXlShapes;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET, &result, pXlSheet, L"Shapes", 0);
    pXlShapes = result.pdispVal;

    IDispatch *pXlShape;
    VARIANT fname;
    fname.vt = VT_BSTR;
    fname.bstrVal=::SysAllocString(strImagePath);
    VARIANT xpropf;
    xpropf.vt=VT_BOOL;
    xpropf.boolVal=FALSE;
    VARIANT xpropt;
    xpropt.vt=VT_BOOL;
    xpropt.boolVal=TRUE;

    VARIANT xtop;
    xtop.vt=VT_R8;
    xtop.dblVal= dTop;
    VARIANT xleft;
    xleft.vt=VT_R8;
    xleft.dblVal=dLeft;
    VARIANT xwidth;
    xwidth.vt=VT_R8;
    xwidth.dblVal=dWidth;
    VARIANT xheight;
    xheight.vt=VT_R8;
    xheight.dblVal=dHeight;

    AutoWrap(DISPATCH_METHOD, &result, pXlShapes, L"AddPicture", 7,xheight,xwidth,xleft,xtop,xpropt,xpropf,fname);
    pXlShape = result.pdispVal;
    }

    using the code given by you

    the image is inserted but not at the exact location of the range given

    so please let me know where i m wrong?

    one more thing i want to ask that

    i want to insert the image at Begining cell given(like L"B2")
    with exact image size means(picture left, top, width & height) whatever it may be.

    Thanks in advance

  3. #78
    Join Date
    Apr 2002
    Location
    Michigan, USA
    Posts
    860

    Re: Open Excel in VC++ and write data

    The arguments xleft and xtop are in the wrong positions: A typo in my code.

    Replace this
    Code:
    AutoWrap(DISPATCH_METHOD, &result, pXlShapes, L"AddPicture", 7,xheight,xwidth,xleft,xtop,xpropt,xpropf,fname);
    with this
    Code:
    AutoWrap(DISPATCH_METHOD, &result, pXlShapes, L"AddPicture", 7,xheight,xwidth,xtop,xleft,xpropt,xpropf,fname);

    You can substitute the actual size of the image for xheight and xwidth if you don't want to force the image to be a certain size.

    Or you can rescale the picture to the original size without knowing the original size using:

    Code:
    {
    VARIANT xprop;
    xprop.vt=VT_BOOL;
    xprop.boolVal=TRUE;
    VARIANT sratio;
    sratio.vt=VT_R8;
    sratio.dblVal=1.0;
    AutoWrap(DISPATCH_METHOD, &result, pXlShape, L"ScaleWidth", 2,xprop,sratio);
    AutoWrap(DISPATCH_METHOD, &result, pXlShape, L"ScaleHeight", 2,xprop,sratio);
    }
    Last edited by Tom Frohman; November 20th, 2009 at 09:04 AM.
    Verere testudinem! (Fear the turtle)

    Once you can accept the universe as matter expanding into nothing that is something, wearing stripes with plaid comes easy. -Albert Einstein

    Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. -Cicero

Page 6 of 6 FirstFirst ... 3456

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Azure Activities Information Page

Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center