MFC读取excel数据

MFC读取excel数据CDatabasedatabase; CStringsDriver; CStringsItem1,sItem2; CStringsDsn; CStringsFile=””;//filename CStringsSql; CFileDialogdlg(TRUE,//true为打开,false为创建 “xls”, “FileList”,

大家好,又见面了,我是你们的朋友全栈君。

CDatabase database;  
	CString sDriver;  
	CString sItem1,sItem2;  
	CString sDsn;  
	CString sFile="";//filename  
	CString sSql;  
	CFileDialog dlg( TRUE, //true为打开,false为创建
		"xls", 
		"FileList", 
		OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"Excel 文件(*.xls)|*.xls||"//此处只取xls格式
		);
	dlg.m_ofn.lpstrTitle = "导入数据";

	if (dlg.DoModal() != IDOK)
		return;
	//获得文件路径名
	sFile = dlg.GetPathName();
	//判断文件是否已经存在,存在则打开文件
	DWORD dwRe = GetFileAttributes(sFile);
	if ( dwRe != (DWORD)-1 )
	{ 
	}
	else return;
	//check driver  
	//sDriver=GetExcelDriver();  
	sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)";
	
	sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s",sDriver,sFile);  

	TRY  
	{  
		//open db  
		database.Open(NULL,false,false,sDsn);  

		CRecordset recset(&database);  
		//read sql   
		sSql="SELECT con1,con2 FROM [Sheet1$]";  
		recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);  

		//get query results  
		while(!recset.IsEOF())  
		{  
			//read inside value  
			recset.GetFieldValue("con1",sItem1);  
			recset.GetFieldValue("con2",sItem2);  
			//此处读取到的数据处理
			recset.MoveNext();  
		}  

		//close db  
		database.Close();  

	}  
	CATCH (CDBException,e)  
	{  
		//db exception occur  
		AfxMessageBox("db error: "+e->m_strError);  
	}  
	END_CATCH;

代码网上大同小异,注意以下几点就好了:

1、需要有 MICROSOFT EXCEL DRIVER (*.XLS) 驱动支持(一般都会有,没有的百度安装即可)

2、通过ODBC写再读基本没问题,但是直接读取很多人会遇到”microsoft jet 数据库引擎找不到对象…”的错误,注意下面即可

3、上例中的con1,con2为excel表中的列名,Sheet1为excel中表名,而不是文件名,切记!

4、注意添加头文件#include <afxdb.h>

sSql="SELECT con1,con2 FROM [Sheet1$]";//注意最后的表名使用方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149523.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python3换行符_python的换行符

    python3换行符_python的换行符广告关闭提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。我想匹配以下内容:参考编号8号长任何角色,任何次数新队任何角色,任何次数新队任何角色,任何次数新队任何角色,任何次数新队任何角色,任何次数我的python代码是:forminre.findall({8}.*n.*n.*n.*n.*,l,re.dot…

    2022年5月23日
    71
  • 准备数据集用于flink学习

    准备数据集用于flink学习

    2020年11月19日
    228
  • android 存储作假,对《纯活人伪造一个Android Killer或APK IDE或apktool反编译失败》的一点讨论…

    android 存储作假,对《纯活人伪造一个Android Killer或APK IDE或apktool反编译失败》的一点讨论…法王遇到的问题平时也遇到过 作为小白 也想参与讨论一下心得 奈何不知道怎么在回帖的时候插入图片 所以另起一个帖子 遇到的这个问题 个人觉得其实是反编译软件对多 dex 的 app 支持的问题 具体问题是插件本身不支持 还是插件已经支持了 但软件本身没有更新不支持 因为知识储备不够 无法得出结论 一 测试 androidkille 反编译结果 1 jpg 88 67KB 下载次数 0 2018 1

    2025年10月15日
    5
  • 大数据开发:分布式文件存储系统简介

    大数据开发:分布式文件存储系统简介在分布式存储技术体系当中,分布式文件存储是其中的分类之一,也是大数据架构当中常常用到的。得益于Hadoop的高人气,Hadoop原生的HDFS分布式文件系统,也广泛为人所知。但是分布式文件存储系统,并非只有HDFS。今天的大数据开发分享,我们就主要来讲讲常见的分布式文件存储系统。分布式文件系统,可以说是分布式系统下的一个子集,这里我们选取市场应用比较广泛的几款产品,HDFS、Ceph、FastDFS以及MooseFS来做简单的分析——HDFS如上所说,HDFS是分布式文件系统当中人气非常

    2022年6月4日
    39
  • shiro框架是什么_中国历史知识框架

    shiro框架是什么_中国历史知识框架Shiro 1.权限管理概述2.Shiro权限框架  2.1概念  2.2ApacheShiro与SpringSecurity区别3.Shiro认证  3.1基于ini认证  3.2自定义Realm–认证4.Shiro授权  4.1基于ini授权  4.2自定义realm–授权5.项目集成shiro认证-授权注意点  5.1认证  5.2授权  5.3注解@RequiresPermissions()  5.4标签式权限验证6.S

    2025年10月9日
    4
  • python+selenium UI自动化不同浏览器之间的切换「建议收藏」

    python+selenium UI自动化不同浏览器之间的切换「建议收藏」python+selenium UI自动化不同浏览器之间的切换

    2022年4月22日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号