利用ODBC驱动处理Excel时的,一些问题:未发现数据源名称并且未指定默认驱动程序"MICROSOFT EXCEL DRIVER(*.XLS)"

yyb520a 2016-12-10 01:53:21
如题,我想利用ODBC驱动创建一个Excel表,并填充数据,结果出现错误:未发现数据源名称并且未指定默认驱动程序
我的代码如下:
void CGridCtrlTestDlg::OnBnClickedSdaochu()
{
USES_CONVERSION;
CDatabase database; //Microsoft Excel Driver(*.xls)
CString sDriver = _T("Microsoft Excel Driver(*.xls)"); //Excel安装驱动 MICROSOFT EXCEL DRIVER(*.XLS)
CString sExceIFile = A2T(ExcelPath); //要建立的 Excel文件
CString sSql;
sSql.Format(_T("DRIVER={%s};DSN='';FIRSTR0WHASNAMES=1; READ0NLY=FALSE; CREATE DB=\"%s\";DBQ = %s"), sDriver, sExceIFile, sExceIFile);
if (!database.OpenEx(sSql, CDatabase::noOdbcDialog)) //运行到这边就报错了
{
MessageBox(_T("创建Excel表格失败!"), _T("数据库错误"));
return;
}

CString sDsn;
char SQL[1024];
memset(SQL, 0, sizeof(SQL));
sDsn.Format(_T("ODBC; DRIVER={%s}; DSN='';DBQ=%s"), sDriver, sExceIFile);
database.Open(NULL, false, false, sDsn);
sSql = _T("create table stock(序号 text,商品名称 text,商品类型 text,价格 text,数量 text,总额 text)");
database.ExecuteSQL(sSql);
for (int i = 0; i < MaxRow + 1; i++)
{
sprintf(SQL,"insert into stock (序号,商品名称,商品类型,价格,数量,总额) values('%s','%s','%s','%s','%s','%s')",
Stock[i][0], Stock[i][1], Stock[i][2], Stock[i][3], Stock[i][4], Stock[i][5]);
sSql = A2T(SQL);
database.ExecuteSQL(sSql);
}
database.Close();
}
由于上传不了截图,我只能说了:
我的系统是WIN10 64位,32位和64位的ODBC数据源都有MICROSOFT EXCEL DRIVER(*.XLS)的驱动?
我想问题出在哪?求大神帮忙!!

...全文
5115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-12-21
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
mlqxj35674 2016-12-20
  • 打赏
  • 举报
回复
3 连接串中的分号不要全角字符
mlqxj35674 2016-12-20
  • 打赏
  • 举报
回复
可能有错误 1 CString sDriver = _T("Microsoft Excel Driver(*.xls)") 正确为CString sDriver = _T("Microsoft Excel Driver (*.xls)") 注意。Driver后面有一个空格 2 sSql.Format(_T("DRIVER={%s};DSN='';FIRSTR0WHASNAMES=1; READ0NLY=FALSE; 这里有几处把0和o弄混了 这个串是很精细的,不是多个空格少个空格都可以的,认真一点啊
赵4老师 2016-12-10
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧