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$]";//注意最后的表名使用方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • oracle universal installer安装_oracle重装

    oracle universal installer安装_oracle重装1、usr/sbin/useradd-m-goinstall-Gdbaoracle什么意思?? 创建了一个新的UNIX/LINUX用户,-m表示如果已经有这个用户不报错,-g是组,-G是其他组,最后是用户名m表示为用户oracle新建一个家目录-g表示为用户指定一个主group-G表示为用户指定一个group这样oracle既属于oinstall组也

  • Hello World on Impala

    Hello World on Impala

    2021年11月14日
  • 如何撰写《软件需求规格说明书》

    1概述1.1编写目的指出编写《需求规格说明书》的目的。下面是示例:编写此文档的目的是进一步定制软件开发的细节问题,希望能使本软件开发工作更具体。为了使用户、软件开发者及分析和测试人员对该软件的初始规定有一个共同的理解,它说明了本软件的各项功能需求、性能需求和数据需求,明确标识各项功能的具体含义,阐述实用背景及范围,提供客户解决问题或达到目标所需要的条件或权能,提供一个度量和遵循的基准。…

  • 汉罗塔的一般解决方法是什么_汉诺塔最快的方法

    汉罗塔的一般解决方法是什么_汉诺塔最快的方法这里主要是汉罗塔的递归求解n个盘子的总步数,和递归每一步盘子的步骤。

    2022年10月12日
  • 二进制小数转十进制方法_小数进制转换

    二进制小数转十进制方法_小数进制转换知识点一:一个数的负次方即为这个数的正次方的倒数。方法一、转换分数法参考文章:https://jingyan.baidu.com/article/597a0643614568312b5243c0.html参考文章:https://zhidao.baidu.com/question/1308562360873359899.html举例:将二进制0.1111转换成十进制数二进制…

  • stimulsoft oracle,Stimulsoft Reports

    stimulsoft oracle,Stimulsoft ReportsStimulsoftReports一站式报表解决方案,支持.NET,JavaScript,Java和Php软件商:Stimulsoft当前版本:2020.3发布日期:2020/6/12推荐:以下是”Reports.Web”,如果您需要了解更多信息,您可以联系我们。支持ASP.NET,ASP.NETMVC,原生.NETCore的报表工具StimulsoftRepor…

发表回复

您的电子邮箱地址不会被公开。

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