MFC第四課 使用ODBC操作EXCEL表

方案一:利用現成的第三方庫:CSpreadSheet

使用CSpreadSheet操作EXCEL的侷限性:你只能夠在EXCEL中創建表,然後才能夠採用ODBC的方式操作EXCEL表,否則查詢語句中FROM後面的表名稱無法填寫.

限制

該控件需要MFC(微軟基礎類庫)支持.未測試是否支持Unicode編碼.控件以ODBC讀寫

Excel文件,需要ODBC驅動程序.Excel文件必須列標記.且首行列標記唯一(字段).禁止

刪除工作簿,僅允許刪除工作簿內容.列值類型參照程序數據類型.不採用Excel格式.

詳細參考:http://blog.csdn.net/andy205214/article/details/5918648

方案二:自己編寫訪問數據庫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  CDatabase db;
//數據庫庫需要包含頭文件#include <afxdb.h>
  CString sDriver = _T("MICROSOFTEXCEL DRIVER (*.XLS)");
// Excel驅動
  CString sSql;
  charszRecord[6][128] = {0};  sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver,strFilePath, strFilePath);
  if(!db.OpenEx(sSql,CDatabase::noOdbcDialog))
//連接數據源DJB.xls
  {
    MessageBox(_T("打開EXCEL文件失敗!"),_T("錯誤"));
    return;
  }
  //打開EXCEL表
  CRecordset pset(&db);
  sSql.Format(_T("SELECTvalues1,values2 FROM Sheet1"));
  pset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
  while(!pset.IsEOF())
  {
    pset.GetFieldValue();//前面字段
    pset.MoveNext();
  }
  db.Close();

注意:

1)通過GetFieldValue獲取當前行中相應屬性值

2)sSql語句是一個查詢語句,其中Sheet1是表名,說明得先在導出的文件中建立表,然後才能夠導入


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章