首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

急VC6.0操作Excel2003?该怎么解决

2012-06-06 
急!!!VC6.0操作Excel2003?C/C++ codevoid CTestExcelDlg::OnButton1() {// TODO: Add your control notifi

急!!!VC6.0操作Excel2003?

C/C++ code
void CTestExcelDlg::OnButton1() {    // TODO: Add your control notification handler code here    _Application app;    Workbooks books;    _Workbook book;    Worksheets sheets;    _Worksheet sheet;    Range range;    Font font;    Range cols;    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);        if( !app.CreateDispatch("Excel.Application") ){        this->MessageBox("无法创建Excel应用!");        return;    }    books=app.GetWorkbooks();    book=books.Add(covOptional);    sheets=book.GetSheets();    sheet=sheets.GetItem(COleVariant((short)1));    range=sheet.GetRange(COleVariant("A1"),COleVariant("A1"));    for (int i=1;i<5;i++)    {        for (int j=1;j<5;j++)        {            range.SetItem(_variant_t((long)i),_variant_t((long)j),_variant_t("test"));         }    }    cols=range.GetEntireColumn();    cols.AutoFit();        app.SetVisible(TRUE);    app.SetUserControl(TRUE);}


VC6.0操作Excel2003,我已经能新建并在一个sheet中写入文字了,但我想切换到另一个sheet中继续写入,该怎么做呢?

[解决办法]
excel默认有三个sheet,你可以通过下面这句代码得到具体的sheet
sheet=sheets.GetItem(COleVariant((short)1));//这里的1表示是第一个sheet,2表示是第二个sheet,3表示第三个sheet
[解决办法]
for (int k=1;i<5;i++)
改成
for (int i=1;i<5;i++)

[解决办法]
不知道是不是需要激活Sheet,

我一般都先Active
C/C++ code
OOL CExcelEx::SetActiveSheet(long nIndex){    if (!IsOpen())    {        return FALSE;    }    if (m_pWorksheet->m_lpDispatch != NULL)    {        if (m_pWorksheet->GetIndex() == nIndex)        {            return TRUE;        }        else        {            m_pWorksheet->ReleaseDispatch();        }    }    Worksheets worksheets = m_pWorkbook->GetWorksheets();    m_pWorksheet->AttachDispatch(worksheets.GetItem(_variant_t(nIndex)));    if (m_pWorksheet->m_lpDispatch != NULL)    {        m_pWorksheet->Activate();    }    return (m_pWorksheet->m_lpDispatch != NULL);}
[解决办法]
wssSheets = wbBook.GetWorksheets();
wsSheet = wssSheets.GetItem(_variant_t("Sheet1")); // Get Sheet1
ExcelApp.SetVisible(FALSE); // 隐藏 //wsSheet.SetName( "Your Sheet" ); // 改名
ExcelApp.SetDisplayAlerts(false);
rngXls = wsSheet.GetCells();
rngXls.AutoFit();

热点排行