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