• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            如何用VC讀取Excel表格中的數(shù)據(jù)詳細(xì)介紹

            首先,我們要明白的是,VC是通過ODBC來訪問Excel表格的,也就是說,VC將Excel表格,當(dāng)作數(shù)據(jù)庫(kù)來處理。當(dāng)然了,也可以通過讀以tab鍵隔開的文件來處理這樣的文件,但是,我還是更加愿意用讀取數(shù)據(jù)庫(kù)的方式來訪問Excel表格。
            第二,既然是數(shù)據(jù)庫(kù),那么,就需要建立一個(gè)與該庫(kù)對(duì)應(yīng)的dsn,這個(gè),而且,在建立dsn之前,首先要確定,已經(jīng)安裝了Excel的驅(qū)動(dòng)。
            第三,要訪問數(shù)據(jù)庫(kù)中的表格,就要先打開該表格,如此,就需要一個(gè)與之對(duì)應(yīng)的RecordSet。如此,有如下代碼:
            void CRWExcel::ReadFromExcel()
            {
                  CDatabase database;
                  CString sSql;
                  CString sItem1, sItem2;
                  CString sDriver;
                  CString sDsn;
                  CString sFile = "Demo.xls";// 將被讀取的Excel文件名
                                                 
                // 檢索是否安裝有Excel驅(qū)動(dòng) "Microsoft Excel Driver (*.xls)"
                  sDriver = GetExcelDriver();
                  if (sDriver.IsEmpty())
                  {
                      // 沒有發(fā)現(xiàn)Excel驅(qū)動(dòng)
                      AfxMessageBox("沒有安裝Excel驅(qū)動(dòng)!");
                      return;
                  }
                  // 創(chuàng)建進(jìn)行存取的字符串
                  sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);

                  TRY
                  {
            // 打開數(shù)據(jù)庫(kù),建立與這個(gè)Excel對(duì)應(yīng)的Database
                      database.Open(NULL, false, false, sDsn);
                      CRecordset recset(&database);
            // 設(shè)置讀取的查詢語句.demo.xls并非文件名,需要在excel中進(jìn)行//設(shè)置,具體文章最后有講
                      sSql = "SELECT Age, Name FROM DEMO.XLS";
                  // 執(zhí)行查詢語句,打開表格
                      recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
                      // 獲取查詢結(jié)果
                      while (!recset.IsEOF())
                      {
                          //讀取Excel內(nèi)部數(shù)值
                          recset.GetFieldValue("Name ", sItem1);
                          recset.GetFieldValue("Age", sItem2);
                          // 移到下一行
                          recset.MoveNext();
                      }
                      // 關(guān)閉數(shù)據(jù)庫(kù)
                      database.Close();
                  }
                  CATCH(CDBException, e)
                  {
                      // 數(shù)據(jù)庫(kù)操作產(chǎn)生異常時(shí)...
                      AfxMessageBox("數(shù)據(jù)庫(kù)錯(cuò)誤: " + e->m_strError);
                  }
                  END_CATCH;
            }
            需要注意的是,我們對(duì)我們的Excel表格需要進(jìn)行一些處理,需要先選定我們要讀取的數(shù)據(jù),之后,選擇插入>>名字>>之后,在輸入框中輸入我們?cè)趕elect語句中用到的表名。第二,需要設(shè)置列名,為我們選定部分的最前面的一行的數(shù)據(jù)。

            posted on 2010-10-11 11:15 wrh 閱讀(8484) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: 如何用VC讀取Excel表格中的數(shù)據(jù)詳細(xì)介紹 2012-03-02 16:57 朱文濤

            那個(gè)函數(shù)GetExcelDriver();怎么會(huì)提示沒定義?如果在C++控制臺(tái)應(yīng)用程序里怎么讀???謝謝~  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2008年4月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            統(tǒng)計(jì)

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久国产精品网站| 久久婷婷五月综合色高清| 久久综合色之久久综合| 色欲综合久久躁天天躁| 久久精品亚洲一区二区三区浴池| 99re这里只有精品热久久| 久久影院午夜理论片无码| 久久久久久九九99精品| 欧美亚洲日本久久精品| 久久精品国产亚洲AV香蕉| 日韩美女18网站久久精品| 999久久久免费精品国产| 久久亚洲精品无码VA大香大香| 77777亚洲午夜久久多喷| 日本五月天婷久久网站| 岛国搬运www久久| 狠狠色丁香久久婷婷综| 亚洲AV乱码久久精品蜜桃| 亚洲午夜无码AV毛片久久| 88久久精品无码一区二区毛片 | 99久久无色码中文字幕人妻 | 久久人妻无码中文字幕| 97精品伊人久久久大香线蕉| 久久精品国产亚洲AV无码偷窥| 国产精品一区二区久久精品涩爱 | 69久久精品无码一区二区| 色欲综合久久躁天天躁蜜桃| 麻豆久久久9性大片| 久久综合久久美利坚合众国| 久久久青草青青国产亚洲免观| 久久香蕉一级毛片| 天天爽天天爽天天片a久久网| 97精品国产91久久久久久| …久久精品99久久香蕉国产 | 精品一区二区久久| 久久99热只有频精品8| 久久久亚洲欧洲日产国码二区 | 久久久久久久综合狠狠综合| 伊色综合久久之综合久久| 中文无码久久精品| 久久香蕉国产线看观看精品yw|