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/149524.html原文链接:https://javaforall.net

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


相关推荐

  • kafka topicPartitions问题

    kafka topicPartitions问题当我实现三个消费者去同时消费一个Topic(默认没有分区)消息时,三个消费者同时消费到了同样的消息现象如下:2019-06-1115:30:02.516[org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1]INFOcom.example.kafka.consumer.TestB-==[cousumerC…

    2022年6月26日
    23
  • 多模态理论张德禄_学术会议 | 适用语言学与多模态国际会议

    多模态理论张德禄_学术会议 | 适用语言学与多模态国际会议适用语言学与多模态国际会议回执时间:2019年5月31日会议时间:2019年8月9-11日会议地点:上海交通大学(闵行校区)上海交通大学马丁适用语言学研究中心定于2019年8月9日至11日举办适用语言学与多模态国际会议。本次会议重点探讨语言学适用研究、多模态话语分析、数字媒体信息传播等跨学科问题。特邀布莱梅大学JohnBateman教授、悉尼大学JamesMartin教…

    2022年7月25日
    14
  • 国科大英语测试Unit3

    国科大英语测试Unit3TranslationandParaphrasingWithoutthe1968experimentsofKendall,FriedmanandTaylorattheStanfordLinearAcceleratorCenter(SLAC),quarkswouldhaveremainedameretheory,awill-o-wispwhoseexistencewasconfidentlypostulatedbutneverproven

    2022年6月3日
    44
  • Idea激活码永久有效Idea2018.3.6激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2018.3.6激活码教程-持续更新,一步到位Idea激活码永久有效2018.3.6激活码教程-Windows版永久激活-持续更新,Idea激活码2018.3.6成功激活

    2022年6月17日
    58
  • SQL SERVER拼接字符串(字符串中有变量)

    SQL SERVER拼接字符串(字符串中有变量)一、拼接字符串(整个字符串不分割)步骤:  1、首先在字符串的前后加单引号;  2、字符串中的变量以’’’+@para+’’’在字符串中表示;  3、若在执行时存在类型转换错误,则应用相应的类型转换函数,对变量进行类型转换(如cast()函数)。示例一:包含SQL拼接字符串的存储过程:CreateProcedureTest@TestIDintAsDeclare@sn…

    2022年6月17日
    395
  • c语言优先级排序

    c语言优先级排序c语言运算优先级

    2022年6月15日
    39

发表回复

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

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