如何用VC讀取Excel表格中的數據詳細介紹

首先,咱們要明白的是,VC是經過ODBC來訪問Excel表格的,也就是說,VC將Excel表格,看成數據庫來處理。固然了,也能夠經過讀以tab鍵隔開的文件來處理這樣的文件,可是,我仍是更加願意用讀取數據庫的方式來訪問Excel表格。
第二,既然是數據庫,那麼,就須要創建一個與該庫對應的dsn,這個,並且,在創建dsn以前,首先要肯定,已經安裝了Excel的驅動。
第三,要訪問數據庫中的表格,就要先打開該表格,如此,就須要一個與之對應的RecordSet。如此,有以下代碼:

  1. void CRWExcel::ReadFromExcel()
  2. {
  3.       CDatabase database;
  4.       CString sSql;
  5.       CString sItem1, sItem2;
  6.       CString sDriver;
  7.       CString sDsn;
  8.       CString sFile = "Demo.xls";// 將被讀取的Excel文件名
  9.                                      
  10.     // 檢索是否安裝有Excel驅動 "Microsoft Excel Driver (*.xls)"
  11.       sDriver = GetExcelDriver();
  12.       if (sDriver.IsEmpty())
  13.       {
  14.           // 沒有發現Excel驅動
  15.           AfxMessageBox("沒有安裝Excel驅動!");
  16.           return;
  17.       }
  18.       // 建立進行存取的字符串
  19.       sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);

  20.       TRY
  21.       {
  22. // 打開數據庫,創建與這個Excel對應的Database
  23.           database.Open(NULL, false, false, sDsn);
  24.           CRecordset recset(&database);
  25. // 設置讀取的查詢語句.demo.xls並不是文件名,須要在excel中進行//設置,具體文章最後有講
  26.           sSql = "SELECT Age, Name FROM DEMO.XLS";
  27.       // 執行查詢語句,打開表格
  28.           recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
  29.           // 獲取查詢結果
  30.           while (!recset.IsEOF())
  31.           {
  32.               //讀取Excel內部數值
  33.               recset.GetFieldValue("Name ", sItem1);
  34.               recset.GetFieldValue("Age", sItem2);
  35.               // 移到下一行
  36.               recset.MoveNext();
  37.           }
  38.           // 關閉數據庫
  39.           database.Close();
  40.       }
  41.       CATCH(CDBException, e)
  42.       {
  43.           // 數據庫操做產生異常時...
  44.           AfxMessageBox("數據庫錯誤: " + e->m_strError);
  45.       }
  46.       END_CATCH;
  47. }

須要注意的是,咱們對咱們的Excel表格須要進行一些處理,須要先選定咱們要讀取的數據,以後,選擇插入>>名字>>以後,在輸入框中輸入咱們在select語句中用到的表名。第二,須要設置列名,爲咱們選定部分的最前面的一行的數據。
相關文章
相關標籤/搜索