c++读取excel的代码详解

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

想要通过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的详细内容,希望我们整理的内容能够帮助到大家。

(0)

相关推荐

  • C++ 中实现把EXCEL的数据导入数据库(ACCESS、MSSQL等)实例代码

    C++ 中实现把EXCEL的数据导入数据库(ACCESS.MSSQL等)实例代码 在把EXCEL的数据导入数据库之前,先进行一些简单的准备工作: 1.把数据所在的EXCEL表另保存为DBF 4格式. 2.打开BCB,添加AdoTable(改名为DBFTable)和DataSource这两个控件 OK,准备工作,到此结束,剩下的就是打代码了 1.在Form_Load()事件中,加入以下代码: AnsiString filepath=ExtractFilePath(FileName); //File

  • C++中实现把表的数据导出到EXCEL并打印实例代码

    实现把表的数据导出到EXCEL并打印实例代码 首先加入这两句: #include "utilcls.h" #include "comobj.hpp" 下面正式开始: void __fastcall TMainForm::ToExcel(TADOQuery *TT,AnsiString str) {//TT为被导出数据的表,str为命令(具体看代码底部的if语句) #define PG OlePropertyGet #define PS OlePropertySet

  • C++读写Excel的实现方法详解

    1.导入Excel类型库使用Visual C++的扩展指令#import导入Excel类型库: 复制代码 代码如下: #import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE14\\MSO.DLL" \     rename("RGB","MsoRGB") \     rename("SearchPath","MsoSearchPath&qu

  • c++读取excel的代码详解

    c++如何读取excel?C++ ODBC操作excel全过程 想要通过ODBC直接读.写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFT EXCEL DRIVER (*.XLS)".然后,可根据下面步骤进行: 1. 在StdAfx.h文件中加入: #include <afxdb.h> #include <odbcinst.h> 2. 通过ODBC直接创建Excel文件(暂定文件名:Demo.xls) //创建并写入

  • Android 中读取Excel文件实例详解

    Android 中读取Excel文件实例详解 最近有个需求需要在app内置数据,新来的产品扔给了我两个Excel表格就不管了(两个表格格式还不统一...),于是通过度娘等方法找到了Android中读取Excel表格文件的一种方法,记录一下. 闲话一下Excel中工作簿和工作表的区别: 工作簿中包含有工作表.工作簿可以由一张或多张工作表组成,一个工作簿就是一个EXCEL表格文件. 好了,开始读取表格文件吧. 前提 首先,我们假设需要读取的表格文件名字为test.xls, 位于assets根目录下.

  • C# 从 UTF-8 流中读取字符串的正确方法及代码详解

     我们下面的代码是从一个流 stream 中读取 UTF-8 编码的字符串.我们可以先考虑一下其中存在的潜在问题. string ReadString(Stream stream) { var sb = new StringBuilder(); var buffer = new byte[4096]; int readCount; while ((readCount = stream.Read(buffer)) > 0) { var s = Encoding.UTF8.GetString(buf

  • Java 利用dom方式读取、创建xml详解及实例代码

    Java 利用dom方式读取.创建xml详解 1.创建一个接口 XmlInterface.Java public interface XmlInterface { /** * 建立XML文档 * @param fileName 文件全路径名称 */ public void createXml(String fileName); /** * 解析XML文档 * @param fileName 文件全路径名称 */ public void parserXml(String fileName); }

  • Python-openpyxl表格读取写入的案例详解

    1.为何选择openpyxl模块 xlxd.xlwt.–只能读取,openpyxl.可以读取写入 2.安装 pip install -i https://pypi.douban.com/simple openpyxl==2.6.2 3.处理对象 openpyxl只能处理xlsx格式的excel文件,只能使用办公软件来创建xlsx格式的excel文件,不能使用pycharm来创建 excel对象 -> sheet表单对象 -> cell单元格对象 -> 行和列.值属性 如果excel文件不

  • python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难.下面结合实现步骤:设计界面.利用循环.多线程来完成抽奖程序设置吧. 实现代码: import random #导入内置的random模块 list1=list(range(0,15)) #将range元素进行列表转换并赋值给列表list1 print("抽奖号码是:",list1) #打

  • PHP内存溢出优化代码详解

    相信很多人做大批量数据导出和数据导入的时候,经常会遇到PHP内存溢出的问题,在解决了问题之后,总结了一些经验,整理成文章记录下. 优化点 1.优化SQL语句,避免慢查询,合理的建立索引,查询指定的字段,sql优化这块在此就不展开了. 2.查询的结果集为大对象时转数组处理,框架中一般有方法可以转,如Laravel中有toArray(),Yii2中有asArray(). 3.对于大数组进行数据切割处理,PHP函数有array_chunk().array_slice(). 4.对于大型的字符串和对象,

  • 不调用方法实现hutool导出excel图片示例详解

    目录 前言 骚操作 输出excel数据代码 导出类 输出图片 展示结果 吐槽 前言 最近在做excel导出文件,然后有一列是图片展示,然后我们图片搞了防盗链,如果直接点开链接,就是一个默认图片(无法展示),我就想着把图片嵌入excel中展示,由于我框架用的是hutool去导出,我点开里面各种类,结果都没有img的输入excel的方法,气死我了 骚操作 其实我也是一个cv工程师,百度找找有没有大佬已经实现这功能,然后就找到了,不是hutool里面的方法,是poi包下 输出excel数据代码 //写

  • Java使用POI实现导出Excel的方法详解

    目录 一.前景 二.概念 2.1. 简介 2.2.Excel版本和相关对象 2.3.WorkBook 2.4.POI依赖 三.POI - 写 3.1.代码示例 3.2. 性能对比 3.3. 测试rowAccessWindowSize 3.4. 导出Excel样式设置 四.POI - 读 4.1.代码示例 4.2.读取不同的数据类型 4.3.读取公式 五.POI - 遇到的坑 一.前景 在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据

  • CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的工具包,它可以为开发者们建立功能完善的 Web 应用程序.是比较主流的一个PHP框架. 下面给大家介绍CI框架(ajax分页,全选,反选,不选,批量删除)完整代码,具体代码如下所示: //ajax分页+搜索(视图层) function ajax_page(page){ var sou = $('#sou').val(); $.ajax({ type: "POST", dataTyp

随机推荐