如何用VC讀取Excel表格中的資料詳細介紹

來源:互聯網
上載者:User

http://www.cppblog.com/wrhwww/archive/2012/03/02/129421.html#166994

首先,我們要明白的是,VC是通過ODBC來訪問Excel表格的,也就是說,VC將Excel表格,當作資料庫來處理。當然了,也可以通過讀以tab鍵隔開的檔案來處理這樣的檔案,但是,我還是更加願意用讀取資料庫的方式來訪問Excel表格。
第二,既然是資料庫,那麼,就需要建立一個與該庫對應的dsn,這個,而且,在建立dsn之前,首先要確定,已經安裝了Excel的驅動。
第三,要訪問資料庫中的表格,就要先開啟該表格,如此,就需要一個與之對應的RecordSet。如此,有如下代碼:
void CRWExcel::ReadFromExcel()
{
      CDatabase database;
      CString sSql;
      CString sItem1, sItem2;
      CString sDriver;
      CString sDsn;
      CString sFile = "Demo.xls";// 將被讀取的Excel檔案名稱
                                     
    // 檢索是否安裝有Excel驅動 "Microsoft Excel Driver (*.xls)"
      sDriver = GetExcelDriver();
      if (sDriver.IsEmpty())
      {
          // 沒有發現Excel驅動
          AfxMessageBox("沒有安裝Excel驅動!");
          return;
      }
      // 建立進行存取的字串
      sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);

      TRY
      {
// 開啟資料庫,建立與這個Excel對應的Database
          database.Open(NULL, false, false, sDsn);
          CRecordset recset(&database);
// 設定讀取的查詢語句.demo.xls並非檔案名稱,需要在excel中進行//設定,具體文章最後有講
          sSql = "SELECT Age, Name FROM DEMO.XLS";
      // 執行查詢語句,開啟表格
          recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
          // 擷取查詢結果
          while (!recset.IsEOF())
          {
              //讀取Excel內部數值
              recset.GetFieldValue("Name ", sItem1);
              recset.GetFieldValue("Age", sItem2);
              // 移到下一行
              recset.MoveNext();
          }
          // 關閉資料庫
          database.Close();
      }
      CATCH(CDBException, e)
      {
          // 資料庫操作產生異常時...
          AfxMessageBox("資料庫錯誤: " + e->m_strError);
      }
      END_CATCH;
}
需要注意的是,我們對我們的Excel表格需要進行一些處理,需要先選定我們要讀取的資料,之後,選擇插入>>名字>>之後,在輸入框中輸入我們在select語句中用到的表名。第二,需要設定列名,為我們選定部分的最前面的一行的資料。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.