微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c++如何读取excel

c++如何读取excel?C++ ODBC操作excel全过程

推荐:《c++教程

想要通过ODBC直接读、写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动MICROSOFT EXCEL DRIVER (*.XLS)。然后,可根据下面步骤进行:

1. 在StdAfx.h文件中加入:

#include <afxdb.h> 
#include <odbcinst.h>

2. 通过ODBC直接创建Excel文件(暂定文件名:Demo.xls)

//创建并写入Excel文件
void CRWExcel::WritetoExcel()
{
CDatabase database;
CString sDriver = MICROSOFT EXCEL DRIVER (*.XLS); // Excel安装驱动
CString sExcelFile = c:\\demo.xls; // 要建立的Excel文件
CString ssql;
TRY
{
// 创建进行存取的字符串
ssql.Format(DRIVER={%s};DSN='';FirsTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\%s\;DBQ=%s,sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(ssql,CDatabase::noOdbcDialog) )
{
// 创建表结构(姓名、年龄)
ssql = CREATE TABLE demo (Name TEXT,Age NUMBER);
database.Executesql(ssql);
// 插入数值
ssql = INSERT INTO demo (Name,Age) VALUES ('徐景周',26);
database.Executesql(ssql);
ssql = INSERT INTO demo (Name,Age) VALUES ('徐志慧',22);
database.Executesql(ssql);
ssql = INSERT INTO demo (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文件
void CRWExcel::ReadFromExcel() 
{
CDatabase database;
CString ssql;
CString sItem1, sItem2;
CString sDriver;
CString sDsn;
CString sFile = Demo.xls; // 将被读取的Excel文件名
// 检索是否安装有Excel驱动 Microsoft Excel Driver (*.xls) 
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox(没有安装Excel驱动!);
return;
}
// 创建进行存取的字符串
sDsn.Format(ODBC;DRIVER={%s};DSN='';DBQ=%s, sDriver, sFile);
TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false, false, sDsn);
CRecordset recset(&database);
// 设置读取的查询语句.
ssql = SELECT Name, Age  
FROM demo  
ORDER BY Name ;
// 执行查询语句
recset.Open(CRecordset::forwardOnly, ssql, CRecordset::readOnly);
// 获取查询结果
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;
}
// 获取ODBC中Excel驱动
CString CRWExcel::GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;
// 获取已安装驱动的名称(涵数在odbcinst.h里)
if (!sqlGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
return ;
// 检索已安装的驱动是否有Excel...
do
{
if (strstr(pszBuf, Excel) != 0)
{
//发现 !
sDriver = CString(pszBuf);
break;
}
pszBuf = strchr(pszBuf, '\0') + 1;
}
while (pszBuf[1] != '\0');
return sDriver;
}

更多编程相关内容,请关注编程之家网编程入门栏目!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐