• <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>

            直接通過ODBC讀寫Excel表格文件

            下載本文示例代碼

            想要通過ODBC直接讀、寫Excel表格文件,首先,應確保ODBC中已安裝有Excel表格文件的驅(qū)動"MICROSOFT EXCEL DRIVER (*.XLS)"。然后,可根據(jù)下面步驟進行:

            1. 在StdAfx.h文件中加入:
            #include <afxdb.h>

            #include <odbcinst.h>

            2. 通過ODBC直接創(chuàng)建Excel文件并在表中插入數(shù)據(jù)(暫定文件名:Demo.xls)
            //創(chuàng)建并寫入Excel文件

            void CRWExcel::WriteToExcel()

            {

              CDatabase database;

              CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安裝驅(qū)動

              CString sExcelFile = "c:\\demo.xls";                // 要建立的Excel文件

              CString sSql;

               

              TRY

              {

                // 創(chuàng)建進行存取的字符串

                sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",

                            sDriver, sExcelFile, sExcelFile);

             

                // 創(chuàng)建數(shù)據(jù)庫 (既Excel表格文件)

                if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )

                {

                  // 創(chuàng)建表結(jié)構(gòu)(姓名、年齡)

                  sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)";

                  database.ExecuteSQL(sSql);

             

                  // 插入數(shù)值

                  sSql = "INSERT INTO demo (Name,Age) VALUES (''徐景周'',26)";

                  database.ExecuteSQL(sSql);

             

                  sSql = "INSERT INTO demo (Name,Age) VALUES (''徐志慧'',22)";

                  database.ExecuteSQL(sSql);

             

                  sSql = "INSERT INTO demo (Name,Age) VALUES (''郭徽'',27)";

                  database.ExecuteSQL(sSql);

                }     

             

                // 關閉數(shù)據(jù)庫

                database.Close();

              }

              CATCH_ALL(e)

              {

                TRACE1("Excel驅(qū)動沒有安裝: %s",sDriver);

              }

              END_CATCH_ALL;

            }

            3. 通過ODBC直接讀取Excel文件(暫定文件名:Demo.xls)
            // 讀取Excel文件

            void CRWExcel::ReadFromExcel()

            {

                CDatabase database;

                CString sSql;

                CString sItem1, sItem2;

                CString sDriver;

                CString sDsn;

                CString sFile = "Demo.xls";    // 將被讀取的Excel文件名

                                                

                // 檢索是否安裝有Excel驅(qū)動 "Microsoft Excel Driver (*.xls)"

                sDriver = GetExcelDriver();

                if (sDriver.IsEmpty())

                {

                    // 沒有發(fā)現(xiàn)Excel驅(qū)動

                    AfxMessageBox("沒有安裝Excel驅(qū)動!");

                    return;

                }

               

                // 創(chuàng)建進行存取的字符串

                sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);

             

                TRY

                {

                    // 打開數(shù)據(jù)庫(既Excel文件)

                    database.Open(NULL, false, false, sDsn);

                   

                    CRecordset recset(&database);

             

                    // 設置讀取的查詢語句.

                    sSql = "SELECT Name, Age "      

                           "FROM demo "                

                           "ORDER BY Name ";

               

                    // 執(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();

                    }

             

                    // 關閉數(shù)據(jù)庫

                    database.Close();

                                        

                }

                CATCH(CDBException, e)

                {

                    // 數(shù)據(jù)庫操作產(chǎn)生異常時...

                    AfxMessageBox("數(shù)據(jù)庫錯誤: " + e->m_strError);

                }

                END_CATCH;

            }

            4. 獲取ODBC中Excel驅(qū)動的函數(shù)
            CString CRWExcel::GetExcelDriver()

            {

                char szBuf[2001];

                WORD cbBufMax = 2000;

                WORD cbBufOut;

                char *pszBuf = szBuf;

                CString sDriver;

             

                // 獲取已安裝驅(qū)動的名稱(涵數(shù)在odbcinst.h里)

                if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))

                    return "";

               

                // 檢索已安裝的驅(qū)動是否有Excel...

                do

                {

                    if (strstr(pszBuf, "Excel") != 0)

                    {

                        //發(fā)現(xiàn) !

                        sDriver = CString(pszBuf);

                        break;

                    }

                    pszBuf = strchr(pszBuf, ''\0'') + 1;

                }

                while (pszBuf[1] != ''\0'');

             

                return sDriver;

            }

            作者信息:
            姓名:徐景周(未來工作室 Future Studio)
            EMAIL:jingzhou_xu@163.net

            本文來自: 乘風原創(chuàng)程序(http://www.qqcf.com) 詳細出處參考:http://study.qqcf.com/web/197/22219.htm

            posted on 2009-05-21 21:25 wrh 閱讀(873) 評論(0)  編輯 收藏 引用

            導航

            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統(tǒng)計

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            午夜天堂av天堂久久久| 新狼窝色AV性久久久久久| 亚洲国产精品无码久久| 亚洲AV无码久久精品成人 | 国产亚洲成人久久| 狠狠色丁香久久婷婷综合图片| 久久久久久久亚洲Av无码| 久久夜色精品国产亚洲| 久久精品国产亚洲αv忘忧草 | 久久99精品久久久久久动态图| 青青青青久久精品国产h| 久久亚洲欧洲国产综合| 日本一区精品久久久久影院| 久久精品无码一区二区三区免费| 国产精品岛国久久久久| 久久精品欧美日韩精品| 亚洲国产成人久久综合野外| 国产成人精品久久亚洲高清不卡| 青草国产精品久久久久久| 国内精品伊人久久久久777| 久久久久久国产a免费观看黄色大片 | 国产精品久久久久久| 久久综合久久美利坚合众国| 爱做久久久久久| 99精品久久久久中文字幕| 思思久久99热只有频精品66| 国产—久久香蕉国产线看观看| 久久午夜无码鲁丝片| 日本WV一本一道久久香蕉| 久久免费香蕉视频| 久久精品亚洲福利| 精品久久久久久国产免费了| 蜜桃麻豆www久久| 久久综合久久综合久久综合| 99久久精品费精品国产一区二区 | 欧美久久久久久| 7777精品伊人久久久大香线蕉| 久久笫一福利免费导航 | 国产日产久久高清欧美一区| 久久久网中文字幕| 久久AAAA片一区二区|