资源描述:
《直接通过ODBC读写Excel表格文件.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、直接通过ODBC读写Excel表格文件译者:徐景周(原作:AlexanderMikula)下载本文示例代码想要通过ODBC直接读、写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFTEXCELDRIVER(*.XLS)"。然后,可根据下面步骤进行:1.在StdAfx.h文件中加入:#include#include2.通过ODBC直接创建Excel文件并在表中插入数据(暂定文件名:Demo.xls)//创建并写入Excel文件voidCRWExcel::Writ
2、eToExcel(){CDatabasedatabase;CStringsDriver="MICROSOFTEXCELDRIVER(*.XLS)";//Excel安装驱动CStringsExcelFile="c:\demo.xls";//要建立的Excel文件CStringsSql;TRY{//创建进行存取的字符串sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB="%s";DBQ=%s",sDriver,sExcelFile,sExc
3、elFile);//创建数据库(既Excel表格文件)if(database.OpenEx(sSql,CDatabase::noOdbcDialog)){//创建表结构(姓名、年龄)sSql="CREATETABLEdemo(NameTEXT,AgeNUMBER)";database.ExecuteSQL(sSql);//插入数值sSql="INSERTINTOdemo(Name,Age)VALUES(''徐景周'',26)";database.ExecuteSQL(sSql);sSql="INSERTINTOdemo(Name,Age)VAL
4、UES(''徐志慧'',22)";database.ExecuteSQL(sSql);sSql="INSERTINTOdemo(Name,Age)VALUES(''郭徽'',27)";database.ExecuteSQL(sSql);}//关闭数据库database.Close();}CATCH_ALL(e){TRACE1("Excel驱动没有安装:%s",sDriver);}END_CATCH_ALL;}3.通过ODBC直接读取Excel文件(暂定文件名:Demo.xls)//读取Excel文件voidCRWExcel::ReadFromE
5、xcel(){CDatabasedatabase;CStringsSql;CStringsItem1,sItem2;CStringsDriver;CStringsDsn;CStringsFile="Demo.xls";//将被读取的Excel文件名//检索是否安装有Excel驱动"MicrosoftExcelDriver(*.xls)"sDriver=GetExcelDriver();if(sDriver.IsEmpty()){//没有发现Excel驱动AfxMessageBox("没有安装Excel驱动!");return;}//创建进行存取
6、的字符串sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s",sDriver,sFile);TRY{//打开数据库(既Excel文件)database.Open(NULL,false,false,sDsn);CRecordsetrecset(&database);//设置读取的查询语句.sSql="SELECTName,Age""FROMdemo""ORDERBYName";//执行查询语句recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readO
7、nly);//获取查询结果while(!recset.IsEOF()){//读取Excel内部数值recset.GetFieldValue("Name",sItem1);recset.GetFieldValue("Age",sItem2);//移到下一行recset.MoveNext();}//关闭数据库database.Close();}CATCH(CDBException,e){//数据库操作产生异常时...AfxMessageBox("数据库错误:"+e->m_strError);}END_CATCH;}4.获取ODBC中Excel驱动的
8、函数CStringCRWExcel::GetExcelDriver(){charszBuf[2001];WORDcbBufMax=2000;WORDc