国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

VC6.0實現(xiàn)讀取Excel數(shù)據(jù)的方法

2020-01-26 15:26:47
字體:
供稿:網(wǎng)友

Excel是常用的辦公軟件之一,本文以Excel2003為例說明VC程序讀取Excel文件的方法。具體步驟如下:
 
1.首先要將excel類添加到工程中。

在ClassWizard中,【Add Class】,在Excel的安裝目錄找到Excel.exe(Microsoft2003是Excel.exe;2007應(yīng)該又獨立的lib庫,這個沒有驗證),添加必要的幾個類:

// Excel應(yīng)用對象_Application  m_oExcelApp;   // Excel程序_Worksheet  m_oWorkSheet;   // 工作表_Workbook  m_oWorkBook;   // 工作簿W(wǎng)orkbooks  m_oWorkBooks;  // 工作簿集合Worksheets  m_oWorkSheets;  // 工作表集合Range  m_oCurrRange;   // 使用區(qū)域

添加到工程中的文件是excel.h和excel.cpp。

2.初始化Com庫

if (CoInitialize(NULL)!=0){    AfxMessageBox("初始化COM支持庫失敗!");    exit(1);}

3.讀取文件中的數(shù)據(jù)

if (!m_oExcelApp.CreateDispatch( _T( "Excel.Application" ), NULL ) ){   ::MessageBox( NULL, _T( "創(chuàng)建Excel服務(wù)失敗!" ), _T( "錯誤提示!" ), MB_OK | MB_ICONERROR);   exit(1);}//設(shè)置為顯示m_oExcelApp.SetVisible(FALSE);m_oWorkBooks.AttachDispatch( m_oExcelApp.GetWorkbooks(), TRUE ); //沒有這條語句,下面打開文件返回失敗。LPDISPATCH lpDisp = NULL;COleVariant covTrue((short)TRUE);COleVariant covFalse((short)FALSE);COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); Range  oCurCell;// 打開文件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 );// 獲得活動的WorkSheet( 工作表 )m_oWorkSheet.AttachDispatch( m_oWorkBook.GetActiveSheet(), TRUE );// 獲得使用的區(qū)域Range( 區(qū)域 )m_oCurrRange.AttachDispatch( m_oWorkSheet.GetUsedRange(), TRUE );// 獲得使用的行數(shù)long lgUsedRowNum = 0;m_oCurrRange.AttachDispatch( m_oCurrRange.GetRows(), TRUE );lgUsedRowNum = m_oCurrRange.GetCount();// 獲得使用的列數(shù)long lgUsedColumnNum = 0;m_oCurrRange.AttachDispatch( m_oCurrRange.GetColumns(), TRUE );lgUsedColumnNum = m_oCurrRange.GetCount();// 讀取Sheet的名稱CString strSheetName = m_oWorkSheet.GetName();//得到全部Cells,此時,CurrRange是cells的集合m_oCurrRange.AttachDispatch( m_oWorkSheet.GetCells(), TRUE );// 遍歷整個Excel表格CStringArray* arrayStr;arrayStr = new CStringArray[lgUsedRowNum];for ( int i = 0; i < lgUsedRowNum; ){   for ( int j = 1; j <= lgUsedColumnNum; )   {   oCurCell.AttachDispatch( m_oCurrRange.GetItem( COleVariant( (long)(i + 1)), COleVariant( (long)j ) ).pdispVal, TRUE );   VARIANT varItemName = oCurCell.GetText();   CString strItemName;   strItemName = varItemName.bstrVal;//         AfxMessageBox( strItemName );   // 判斷是否是合并的單元格   VARIANT varMerge = oCurCell.GetMergeCells();   if ( varMerge.boolVal == -1 )   {//             AfxMessageBox( _T( "是合并的單元格!" ) );   }   else if ( varMerge.boolVal == 0 )   {//             AfxMessageBox( _T( "不是合并的單元格!" ) );   }   arrayStr[i].Add( strItemName );   j++;   }   i++;}// 更新列表控件數(shù)據(jù)m_pExcelOperDlg->initListCtrlColumn( lgUsedColumnNum );m_pExcelOperDlg->updateListCtrlData( arrayStr, lgUsedRowNum );// 釋放二維數(shù)組delete[] arrayStr;// 關(guān)閉m_oWorkBook.Close( covOptional, COleVariant( strFilePath ), covOptional );m_oWorkBooks.Close();// 釋放m_oCurrRange.ReleaseDispatch();m_oWorkSheet.ReleaseDispatch();m_oWorkSheets.ReleaseDispatch();m_oWorkBook.ReleaseDispatch();m_oWorkBooks.ReleaseDispatch();m_oExcelApp.ReleaseDispatch();m_oExcelApp.Quit();  // 這條語句是推出Excel程序,任務(wù)管理器中的EXCEL進程會自動結(jié)束。

補充:本文所述程序?qū)嵗暾创a點此下載

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 太保市| 盐亭县| 阿图什市| 道孚县| 牙克石市| 汝阳县| 江西省| 习水县| 临海市| 大港区| 淮阳县| 沽源县| 夏邑县| 岑溪市| 梁河县| 宜川县| 贡觉县| 新田县| 大冶市| 连云港市| 五河县| 新民市| 涞源县| 日照市| 贡山| 伊通| 潼关县| 大田县| 宜川县| 沅陵县| 井研县| 历史| 鲜城| 鄂伦春自治旗| 鹤庆县| 汉寿县| 巴南区| 平阴县| 台中市| 孝昌县| 同江市|