用wxDb(ODBC)連接Excel sheet
| 發(fā)表主題: 用wxDb(ODBC)連接Excel sheet | |
|
|
|
|
碰到個(gè)活要讀取Excel文件中的數(shù)據(jù),搜了一下Excel有ODBC驅(qū)動(dòng)可以使用,碰巧wxWidgets又有ODBC模塊,真是可以省掉不少事情。本以為可以輕松搞定,不料一直沒有能連接上,郁悶了一陣子,后來在RTFS的原則下終于調(diào)試出,原來是wxDb的一個(gè)bug,修復(fù)和提交patch后,問題解決。 bug submission: https://sourceforge.net/tracker/?func=detail&atid=309863&aid=1494705&group_id=9863 使用范例: wxString s = wxT("DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';DBQ=")+filename; wxDbConnectInf dbi; dbi.SetConnectionStr(s); dbi.AllocHenv(); db = new wxDb(dbi.GetHenv()); db->Open(&dbi);//this line failed if not patched 在后面提取數(shù)據(jù)的時(shí)候,需要提供table名字,Excel比較特殊,不是直觀的關(guān)系型數(shù)據(jù)庫(kù)那樣可以看到table的存在。方法是: 選定數(shù)據(jù)區(qū)域,菜單->插入->名稱->定義,里面輸入的名字就是table名稱。 提取table的例子: if(db->TableExists(wxT("ryzl"))){ UWORD n; wxDbColInf *cols = db->GetColumns(wxT("ryzl"),&n); if(cols == NULL){ wxMessageBox(wxT("no no get")); }else{ wxMessageBox(wxString::Format(wxT("we got %d"),(int)n)); } }else{ wxMessageBox(wxT("table ryzl not exists")); } |
|
posted on 2007-01-30 14:13 王光平 閱讀(1088) 評(píng)論(1) 編輯 收藏 引用 所屬分類: 編程技術(shù)

