a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

VC6.0實現讀取Excel數據的方法

2020-01-26 15:26:47
字體:
來源:轉載
供稿:網友

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

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

// Excel應用對象_Application  m_oExcelApp;   // Excel程序_Worksheet  m_oWorkSheet;   // 工作表_Workbook  m_oWorkBook;   // 工作簿Workbooks  m_oWorkBooks;  // 工作簿集合Worksheets  m_oWorkSheets;  // 工作表集合Range  m_oCurrRange;   // 使用區域

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

2.初始化Com庫

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

3.讀取文件中的數據

if (!m_oExcelApp.CreateDispatch( _T( "Excel.Application" ), NULL ) ){   ::MessageBox( NULL, _T( "創建Excel服務失敗!" ), _T( "錯誤提示!" ), MB_OK | MB_ICONERROR);   exit(1);}//設置為顯示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 );// 獲得使用的區域Range( 區域 )m_oCurrRange.AttachDispatch( m_oWorkSheet.GetUsedRange(), TRUE );// 獲得使用的行數long lgUsedRowNum = 0;m_oCurrRange.AttachDispatch( m_oCurrRange.GetRows(), TRUE );lgUsedRowNum = m_oCurrRange.GetCount();// 獲得使用的列數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++;}// 更新列表控件數據m_pExcelOperDlg->initListCtrlColumn( lgUsedColumnNum );m_pExcelOperDlg->updateListCtrlData( arrayStr, lgUsedRowNum );// 釋放二維數組delete[] arrayStr;// 關閉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程序,任務管理器中的EXCEL進程會自動結束。

補充:本文所述程序實例完整源碼點此下載

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

圖片精選

主站蜘蛛池模板: 国产精品欧美日韩在线观看 | 国产乱码精品一区二区三区手机版 | 狠狠操操操 | 欧美激情自拍 | 99这里只有精品 | 国产一区二区三区精品久久久 | 国产一区二区三区高清 | 亚洲乱码一区二区三区在线观看 | 日韩av成人 | 九九热精品视频在线 | 免费看色 | 成人精品一区二区三区电影黑人 | 色无欲天天天影视综合网 | 中文字幕乱码一区二区三区 | 黄色在线视频网 | 五月色综合 | 日韩高清国产一区在线 | 欧美1区 | 欧美a在线| 亚洲精品久久久蜜桃 | 一区二区视频在线 | 毛片av网址 | 免费观看黄色一级大片 | 欧美一区二区三区黄 | 成人免费视频网站在线看 | 夜夜躁狠狠躁夜躁麻豆 | 国产极品美女在线精品图片 | 一区免费 | 91新视频| 叶山小百合av一区二区 | 亚洲码欧美码一区二区三区 | 免费中文字幕 | 97电影在线观看 | 精品日韩一区二区三区 | 中文字幕99| 五月婷婷色 | 国产精品久久久久久久久久久久 | 岛国av在线 | 久草资源在线视频 | 97精品 | 精品一区二区av |