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] 举报,一经查实,本站将立刻删除。