VC里可以用Excel提供的类型库来编程操作Excel表格,最近有人问及怎么删除一个sheet,
该提问者说他的代码只能删除一个空的sheet,非空的总是删不了,我以前也没操作过Excel 试了一下 ,发现是可以的,Excel提供的类型库还是瞒好用的,只要去挖掘.......
代码如下,我就不解析了,看看就懂
void COptExcelDlg::OnOK()
{
_Application app;
if(!app.CreateDispatch(_T("Excel.Application"),NULL))
{
AfxMessageBox(_T( "fail2 "));
return;
}
app.SetVisible(FALSE);
app.SetUserControl(FALSE);
app.SetDisplayAlerts(FALSE);
Workbooks books;
books.AttachDispatch(app.GetWorkbooks());
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
lpDisp = books.Open( _T( "C:\\xx.xls"),
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional);
_Workbook book;
book.AttachDispatch(lpDisp);
Sheets sheets;
sheets.AttachDispatch(book.GetWorksheets());
_Worksheet sheet;
sheet.AttachDispatch(sheets.GetItem(COleVariant("Sheet1")));
sheet.Delete();
book.Save();
// delete pSheets, MUST DO THIS
book.Close(
COleVariant((short)TRUE),
COleVariant(_T( "C:\\xx.xls ")),
COleVariant((short)FALSE));
app.Quit();
}

评论