急!!!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();