用wxDb(ODBC)连接Excel sheet

发表主题: 用wxDb(ODBC)连接Excel sheet

碰到个活要读取Excel文件中的数据,搜了一下Excel有ODBC驱动可以使用,碰巧wxWidgets又有ODBC模块,真是可以省掉不少事情。本以为可以轻松搞定,不料一直没有能连接上,郁闷了一阵子,后来在RTFS的原则下终于调试出,原来是wxDb的一个bug,修复和提交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


在后面提取数据的时候,需要提供table名字,Excel比较特殊,不是直观的关系型数据库那样可以看到table的存在。方法是:
选定数据区域,菜单->插入->名称->定义,里面输入的名字就是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 王光平 阅读(1052) 评论(1)  编辑 收藏 引用 所属分类: 编程技术

评论

# re: 用wxDb(ODBC)连接Excel sheet 2010-07-20 13:10 wx

好,学习了。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

留言簿(4)

随笔分类

随笔档案

搜索

最新评论