这里说明与WorkSheet名称相关的两个操作:
1. 获得一个Excel文件中所有WorkSheet的名称。
2. 根据指定的WorkSheet名称,获得该WorkSheet的接口。
第一个操作:
int
CIOExcel::getWorksheetsNameList( CString strFilePath, CStringArray& arraySheet )
{
LPDISPATCH lpDisp = NULL;
//
打开文件
lpDisp = m_oWorkBooks.Open( strFilePath,
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing) );
//
获得活动的WorkBook( 工作簿)
m_oWorkBook.AttachDispatch( lpDisp, TRUE );
//
获得工作表集
m_oWorkSheets.AttachDispatch( m_oWorkBook.GetSheets(), TRUE );
//
包含的WorkSheet的个数
long lgSheetNum = m_oWorkSheets.GetCount();
//
获得名称列表
CStringArray arraySheetName;
CString strName;
for ( int i = 1; i <= lgSheetNum; i++ )
{
m_oWorkSheet.AttachDispatch( m_oWorkSheets.GetItem( COleVariant( long( i ) ) ), TRUE );
strName = m_oWorkSheet.GetName();
arraySheetName.Add( strName );
}
arraySheet.Copy( arraySheetName );
return 0;
}
第二个操作:
LPDISPATCH lpDisp = NULL;
//
打开文件
lpDisp = m_oWorkBooks.Open( strFilePath,
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing),
_variant_t(vtMissing) );
//
获得活动的WorkBook( 工作簿)
m_oWorkBook.AttachDispatch( lpDisp, TRUE );
//
获得工作表集
m_oWorkSheets.AttachDispatch( m_oWorkBook.GetSheets(), TRUE );
//
获得指定的工作表
m_oWorkSheet.AttachDispatch( m_oWorkSheets.GetItem( COleVariant( strSheetName ) ), TRUE );
还有一定不要忘记初始化COM库和创建Excel程序。
if (!m_oExcelApp.CreateDispatch( _T( "Excel.Application" ), NULL ) )
{
AfxMessageBox( _T( "
创建Excel服务失败!"
) );
return -1;
}
//
设置为显示
m_oExcelApp.SetVisible(FALSE);
m_oWorkBooks.AttachDispatch( m_oExcelApp.GetWorkbooks(), TRUE );