当前位置:首页 ? 其他

Excel操作——删除工作表

2008-07-04 09:44 本站整理 浏览(46)

研究一阵Excel了,也知道调用_WorkSheet对象的Delete方法就可以删除工作表,但试了很多次都不成功,经过反复试验,发现原来必须先把工作表中的数据清空,才能删除。有人说不用,我想可能是Office版本的差别的,我用Office2003肯定是这样,2007也许就不用了。

把代码贴出来,方法没有问题。

[align=left]int CIOExcel::deleteWorkSheet( CString strFilePath, CString strSheetName )[/align]

[align=left]{[/align]

[align=left] int nRetVal = 0;[/align]

[align=left] [/align]

[align=left] // 打开文件,获取激活的Sheet[/align]

[align=left] LPDISPATCH lpDisp = NULL;[/align]

[align=left] COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); [/align]

[align=left] [/align]

[align=left] // 打开文件[/align]

[align=left] lpDisp = m_oWorkBooks.Open( strFilePath, [/align]

[align=left] _variant_t(vtMissing), [/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing) );[/align]

[align=left] // 获得活动的WorkBook( 工作簿)[/align]

[align=left] m_oWorkBook.AttachDispatch( lpDisp, TRUE );[/align]

[align=left] // 获得工作表集[/align]

[align=left] m_oWorkSheets.AttachDispatch( m_oWorkBook.GetSheets(), TRUE );[/align]

[align=left] // 获得指定的工作表[/align]

[align=left] m_oWorkSheet.AttachDispatch( m_oWorkSheets.GetItem( COleVariant( strSheetName ) ), TRUE );[/align]

[align=left] m_oCurrRange.AttachDispatch( m_oWorkSheet.GetUsedRange(), TRUE );[/align]

[align=left] // 清空数据[/align]

[align=left] m_oCurrRange.Clear();[/align]

[align=left] // 先保存一下[/align]

[align=left] m_oWorkBook.SaveAs( COleVariant(strFilePath),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] 0,[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing) );[/align]

[align=left] [/align]

[align=left] // 删除工作表[/align]

[align=left] m_oWorkSheet.Delete();[/align]

[align=left] // 再先保存一下[/align]

[align=left] m_oWorkBook.SaveAs( COleVariant(strFilePath),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] 0,[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing),[/align]

[align=left] _variant_t(vtMissing) );[/align]

[align=left] [/align]

[align=left] m_oWorkBook.Close( covOptional, COleVariant(strFilePath), covOptional );[/align]

[align=left] m_oWorkBooks.Close();[/align]

[align=left] [/align]

[align=left] return 0;[/align]

[align=left]}[/align]

函数的两个参数分别是:Excel文件的路径和WorkSheet的名称。