最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年07月25日 16:01:57   投稿:shichen2014  
這篇文章主要介紹了VC6.0實現(xiàn)讀取Excel數(shù)據(jù)的方法,非常實用的功能,需要的朋友可以參考下

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;   // 工作簿
Workbooks  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進(jìn)程會自動結(jié)束。

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

相關(guān)文章

  • C++使用jsoncpp解析json的方法示例

    C++使用jsoncpp解析json的方法示例

    這篇文章主要介紹了C++使用jsoncpp解析json的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Qt實現(xiàn)文本編輯器(一)

    Qt實現(xiàn)文本編輯器(一)

    在Qt中QMainWindow是一個為用戶提供主窗口程序的類,包含了:菜單欄、工具欄、錨接部件、狀態(tài)欄以及一個中部件。本文將利用QMainWindow制作一個文本編輯器,感興趣的可以試一試
    2022-01-01
  • C語言中經(jīng)socket接收數(shù)據(jù)的相關(guān)函數(shù)詳解

    C語言中經(jīng)socket接收數(shù)據(jù)的相關(guān)函數(shù)詳解

    這篇文章主要介紹了C語言中經(jīng)socket接收數(shù)據(jù)的相關(guān)函數(shù)詳解,分別為recv()函數(shù)和recvfrom()函數(shù)以及recvmsg()函數(shù)的使用,需要的朋友可以參考下
    2015-09-09
  • 最長公共子字符串的使用分析

    最長公共子字符串的使用分析

    本篇文章是對最長公共子字符串的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++11線程、互斥量以及條件變量示例詳解

    C++11線程、互斥量以及條件變量示例詳解

    這篇文章主要介紹了C++11線程、互斥量以及條件變量,C++11增加了線程以及線程相關(guān)的類,很方便地支持了并發(fā)編程,使得編寫多線程程序的可移植性得到了很大的提高,本文通過實例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-03-03
  • C語言實現(xiàn)簡易通訊錄完整流程

    C語言實現(xiàn)簡易通訊錄完整流程

    這篇文章主要為大家介紹了C語言實現(xiàn)簡易通訊錄的完整流程,每個環(huán)節(jié)都有完整代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 使用C語言實現(xiàn)掃雷小游戲

    使用C語言實現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了使用C語言實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++實現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找

    C++實現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找

    這篇文章主要介紹了C++實現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找方法,涉及數(shù)組的操作,有值得借鑒的技巧,需要的朋友可以參考下
    2014-09-09
  • Qt實現(xiàn)電子時鐘的示例代碼

    Qt實現(xiàn)電子時鐘的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)顯示與桌面上并可以隨意拖拽至桌面任意位置的電子時鐘案例,感興趣的小伙伴可以嘗試一下
    2022-06-06
  • C++11?condition_variable條件變量的用法說明

    C++11?condition_variable條件變量的用法說明

    這篇文章主要介紹了C++11?condition_variable條件變量的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

黄龙县| 高青县| 涿州市| 仪陇县| 苏州市| 潍坊市| 临漳县| 沛县| 分宜县| 原阳县| 仪陇县| 平乐县| 泸州市| 黎平县| 金昌市| 延庆县| 中卫市| 重庆市| 阿坝| 天全县| 孟州市| 青冈县| 泽普县| 湛江市| 平潭县| 隆德县| 沂水县| 仪征市| 元朗区| 甘洛县| 杭锦后旗| 保定市| 汉源县| 北票市| 大新县| 盱眙县| 建水县| 济南市| 永德县| 旌德县| 大关县|