mardi 8 février 2011

How to export an image to an Excel file

Use the following job :)

static void ExportImageToExcel(Args _args)
{
    COM comApplication;
    COM comWorkbooks;
    COM comWorkbook;
    COM comWorksheet;
    COM comShapes;

    COMVariant variant = new COMVariant();
    COMVariant xpos = new COMVariant();
    COMVariant ypos = new COMVariant();
    COMVariant state = new COMVariant();
    COMVariant width = new COMVariant();
    COMVariant height = new COMVariant();

    SysExcelWorksheet excelWorksheet;
    SysExcelCells excelCells;
    ;

    //Create the Excel app and grab the workbooks
    comApplication = new COM('Excel.application');
    comWorkBooks = comApplication.workbooks();

    //Wrap the rest in an exception to make sure excel is closed
    try
    {
        //Create a new workbook and get a reference to it
        variant.int(-4167);
        comWorkBook = comWorkBooks.add(variant);
        comWorkSheet = comApplication.activeSheet();
        //Add some text to the worksheet
        excelWorksheet = SysExcelWorkSheet::construct(MSOfficeVersion::Office2007, comWorksheet);
        excelCells = excelWorksheet.cells();
        excelCells.item(10,1).value("Hello world");

        //Set up image parameters
        variant.bStr("c:\\temp\\hello.bmp");
        xpos.int(1);
        ypos.int(1);
        state.int(1);
        width.int(100);
        height.int(100);
        //Add the image to the worksheet
        comShapes = comWorkSheet.shapes();
        comShapes.addPicture(variant,xpos,ypos,state,state,width,height);

        //Autofitt and protect the sheet
        excelworksheet.columns().autoFit();
        excelWorksheet.protect('',true,true);

        //Save the sheet and close the app
        comWorkBook.saveas("c:\\temp\\hello.xls");
        comWorkBooks.close();
        comApplication.quit();
    }
    catch(Exception::Error)
    {
        //Force app to quit
        comWorkBook.saveas("c:\\temp\\hello.xls");
        comWorkBooks.close();
        comApplication.quit();
    }

}

Happy Daxing!

Aucun commentaire:

Enregistrer un commentaire