c++如何读取excel
导读:收集整理的这篇文章主要介绍了c++如何读取excel,觉得挺不错的,现在分享给大家,也给大家做个参考。c++如何读取excel?C++ ODBC操作excel全过程推荐:《c++教程》想要通过ODBC直接读、写Excel表格文件,首先,应确...
收集整理的这篇文章主要介绍了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;
}
更多编程相关内容,请关注编程入门栏目!
以上就是c++如何读取excel的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: c++如何读取excel
本文地址: https://pptw.com/jishu/593822.html
