如何设置Excel中单元格的字体属性?没有找到相关的帖子。

解决方案 »

  1.   

    ///////////////////////////////////////////////////////////////////////////////////////
    //change cell font of Excel
    ///////////////////////////////////////////////////////////////////////////////////////
    void CC2Dlg::OnOK()
    {//HOWTO: Create Automation Project Using MFC and a Type Library  Q178749
    //change font of a Cell in excel
    try
    {
    _Application app;     // app is an _Application object.
    _Workbook book;       // More object declarations.
    _Worksheet sheet;
    Workbooks books;
    Worksheets sheets;
    Range range;          // Used for Microsoft Excel 97 components.
    LPDISPATCH lpDisp;    // Often reused variable.
    COleVariant
    covTrue((short)TRUE),
    covFalse((short)FALSE),
    covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    if(!app.CreateDispatch("Excel.Application"))
    {
    AfxMessageBox("Couldn't CreateDispatch() for Excel");
    return;
    }
    app.SetVisible(TRUE);
    lpDisp = app.GetWorkbooks();     // Get an IDispatch pointer.
    ASSERT(lpDisp);
    books.AttachDispatch(lpDisp);    // Attach the IDispatch pointer
    // to the books object.
    lpDisp = books.Open("C:\\temp\\book1.xls",     // Test.xls is a workbook.
    covOptional, covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional );   // Return Workbook's IDispatch
    // pointer.
    book.AttachDispatch( lpDisp );
    lpDisp = book.GetSheets();
    ASSERT(lpDisp);
    sheets.AttachDispatch(lpDisp);
    // Get sheet #1 and attach the IDispatch pointer to your sheet
    // object.
    lpDisp = sheets.GetItem( COleVariant((short)(1)) );
    ASSERT(lpDisp);
    sheet.AttachDispatch(lpDisp);
    lpDisp = sheet.GetRange(COleVariant("B3"), COleVariant("b3"));
    range.AttachDispatch(lpDisp);
    range.SetNumberFormat(COleVariant("@"));
    range.SetItem(COleVariant((long)(1)),COleVariant((long)(1)),COleVariant(LPCTSTR("000666")));
    Font newfont;
    lpDisp=range.GetFont();
    newfont.AttachDispatch(lpDisp);
    newfont.SetName(COleVariant("宋体"));
    newfont.SetSize(COleVariant((long)24));
    newfont.ReleaseDispatch();
    // Release dispatch pointers.
    range.ReleaseDispatch();
    sheet.ReleaseDispatch();
    // This is not really necessary because
    // the default second parameter of AttachDispatch releases
    // when the current scope is lost. } // End of processing. catch(COleException *e)
    {
            char buf[1024];     // For the Try...Catch error message.
            sprintf(buf, "COleException. SCODE: %08lx.", (long)e->m_sc);
            ::MessageBox(NULL, buf, "COleException", MB_SETFOREGROUND | MB_OK);
    }
    catch(COleDispatchException *e)
    {
            char buf[1024];     // For the Try...Catch error message.
            sprintf(buf,
    "COleDispatchException. SCODE: %08lx, Description: \"%s\".",
    (long)e->m_wCode,(LPSTR)e->m_strDescription.GetBuffer(512));
            ::MessageBox(NULL, buf, "COleDispatchException",
    MB_SETFOREGROUND | MB_OK);
    }
    catch(...)
    {
            ::MessageBox(NULL, "General Exception caught.", "Catch-All",
    MB_SETFOREGROUND | MB_OK);
    }
    CDialog::OnOK();
    }