C++读写Excel表格教程

  • 二、ExcelRW类源代码
    • 1、ExcelRW.h
    • 2、ExcelRW.cpp
  • 二、使用教程
    • 1、复制文件到工程路径下
    • 2、在工程项目中添加ExcelRW类
    • 3、在对话框类中使用ExcelRW类
    • 3、demo界面
  • 二、demo程序下载

看了一眼网上其他人的例子,大部分人都是直接搬运别人的过来,都是什么打开类向导进入类啊,然后修改头文件什么之类的,导致感觉他们写的有些复杂了点,我分享的这个的原因是我这个使用起来简单些。
之前就写过对Excel表格的写入操作,今天整理了一下,把这些功能封装起来,使用简单,可以满足我们基本需求。

二、ExcelRW类源代码

1、ExcelRW.h

#pragma once
#include "CApplication.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
#include "CRange.h"class ExcelRW
{
public:ExcelRW();~ExcelRW();CApplication m_ExcelApp;            CWorkbook m_ExcelBook;         CWorkbooks m_ExcelBooks;       CWorksheet m_ExcelSheet;          CWorksheets m_ExcelSheets;        CRange m_ExcelRange;                        BOOL m_bNewTable = FALSE;BOOL m_bServeStart=FALSE;CString m_openFilePath;              public:void OpenTable(CString OpenPath);//打开表格,OpenPath为要表格路径void WriteTable(CString clocow,CString strWrite);//写入表格数据,clocow为表格位置(比如“A5”),strWrite为要写入的字符void ReadTable(CString clocow, CString &strRead);//读取数据void CloseTable();//保存并关闭表格
};

2、ExcelRW.cpp

#include "stdafx.h"
#include "ExcelRW.h"ExcelRW::ExcelRW()
{COleVariant covTrue((short)TRUE);COleVariant covFalse((short)FALSE);COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
}ExcelRW::~ExcelRW()
{
}void ExcelRW::OpenTable(CString OpenPath)
{if (m_bServeStart)CloseTable();m_openFilePath = OpenPath;//创建Excel 服务器(启动Excel)if (!m_ExcelApp.CreateDispatch(_T("Excel.Application"))){AfxMessageBox(_T("启动Excel服务失败"), MB_OK | MB_ICONWARNING);return;}m_bServeStart = TRUE;/*判断当前Excel的版本*/CString strExcelVersion = m_ExcelApp.get_Version();//获取版本信息int iStart = 0;strExcelVersion = strExcelVersion.Tokenize(".", iStart);if ("11" == strExcelVersion){//AfxMessageBox("当前Excel的版本是2003。");}else if ("12" == strExcelVersion){//AfxMessageBox("当前Excel的版本是2007。");}else{//AfxMessageBox("当前Excel的版本是其他版本。");}m_ExcelApp.put_Visible(FALSE);m_ExcelApp.put_UserControl(FALSE);m_ExcelBooks.AttachDispatch(m_ExcelApp.get_Workbooks());//得到工作簿容器  try{m_ExcelBook = m_ExcelBooks.Open(m_openFilePath,vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,vtMissing, vtMissing, vtMissing, vtMissing);}catch(...){m_ExcelBook = m_ExcelBooks.Add(vtMissing);m_bNewTable = TRUE;}/*得到工作簿中的Sheet的容器*/m_ExcelSheets.AttachDispatch(m_ExcelBook.get_Sheets());/*打开一个Sheet,如不存在,就新增一个Sheet*/CString strSheetName = _T("Sheet1");try{/*打开一个已有的Sheet*/m_ExcelSheet = m_ExcelSheets.get_Item(_variant_t(strSheetName));}catch (...){/*创建一个新的Sheet*/m_ExcelSheet = m_ExcelSheets.Add(vtMissing, vtMissing, _variant_t((long)1), vtMissing);m_ExcelSheet.put_Name(strSheetName);}
}void ExcelRW::WriteTable(CString clocow,CString strWrite)
{m_ExcelRange = m_ExcelSheet.get_Range(COleVariant(clocow), COleVariant(clocow));m_ExcelRange.put_Value2(COleVariant(strWrite));
}void ExcelRW::CloseTable()
{m_ExcelBook.put_Saved(TRUE);   if(m_bNewTable)m_ExcelBook.SaveCopyAs(COleVariant(m_openFilePath));//另存为elsem_ExcelBook.Save();// 释放对象m_ExcelBooks.ReleaseDispatch();m_ExcelBook.ReleaseDispatch();m_ExcelSheets.ReleaseDispatch();m_ExcelSheet.ReleaseDispatch();m_ExcelRange.ReleaseDispatch();m_ExcelApp.Quit();m_ExcelApp.ReleaseDispatch();m_bServeStart = FALSE;
}//获取单元格内容
void ExcelRW::ReadTable(CString clocow, CString &strRead)
{variant_t rValue;m_ExcelRange = m_ExcelSheet.get_Range(COleVariant(clocow), COleVariant(clocow));rValue = m_ExcelRange.get_Value2();switch (rValue.vt){case VT_R8:strRead.Format("%f", (float)rValue.dblVal);break;case VT_BSTR:strRead = rValue.bstrVal;break;case VT_I4:strRead.Format("%ld", (int)rValue.dblVal);break;default:break;}
}

二、使用教程

1、复制文件到工程路径下

直接将这个8个文件复制到你的工程路径下,前面6个是c++操作Excel的接口类,后面两个文件是我封装的ExcelRW类

2、在工程项目中添加ExcelRW类

然后将ExcelRW类的头文件和Cpp文件加入到工程项目中

3、在对话框类中使用ExcelRW类

在对话类中添加ExcelRW类头文件并创建对象,然后就可以利用ExcelRW类对Excel表格进行读写。

3、demo界面

二、demo程序下载

如果小伙伴还是有疑问可以自行下载demo研究一下。
https://download.csdn.net/download/bin1995/76629553

C++读写Excel表格之小白入门教程相关推荐

  1. Python读写Excel表格,就是这么简单粗暴又好用(文末免费送资料)

    最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书上看 ...

  2. java使用jxl包读写excel表格文件,即xls格式文件

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用jxl包读写excel表格文件,即xls格式文件 本实例演示使用jxl包实现对excel文件的操作,下载 测试代码 public st ...

  3. vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...

    原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...

  4. 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用

    Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...

  5. python简单代码编写-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel――xlrd 2.python写excel――xlwt 1.读excel数据,包括日期等数据 ...

  6. python读取excel表格-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 ...

  7. python处理表格很厉害么_Python读写Excel表格,就是这么简单粗暴又好用

    关注恋习Python(ID:sldata2017) 这是恋习Python之手把手系列第5篇原创首发文章 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处 ...

  8. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

  9. python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用

    最近在做一些数据处理和计算的工作,因为数据是以.CSV格式保存的,因此刚开始直接用Excel来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...

最新文章

  1. boost::histogram::axis::option用法的测试程序
  2. AD9834 DDS 使用经验
  3. python 导入numpy 导致多进程绑定同一个CPU问题解决方法
  4. xshell安装mysql步骤_mysql主从复制
  5. Socket编程实例
  6. 力扣491. 递增子序列(JavaScript)
  7. 用户没有create session权限_快速搞懂Oracle 19c安全新特性 (二)Privilege Analysis(权限分析)...
  8. php错误日志框架,错误与日志 - Laravel - 为 WEB 艺术家创造的 PHP 框架。
  9. 韦东山嵌入式linux驱动开发,学习嵌入式Linux开发——韦东山升级版全系列嵌入式视频之总线设备驱动模型代码分析...
  10. 在计算机桌面中选择了隐藏如何显示,怎么把隐藏电脑桌面游戏找到
  11. Windows10系统 ADMUI3无法删除
  12. 索引格式的图片在PS软件中无法操作,怎么解决?
  13. echarts饼图 外圈转动动画 pie
  14. pythoninput输入数字_python如何保证输入键入数字的方法
  15. vue+echarts+自适应 实现可视化大屏展示效果
  16. matlab emi滤波器设计,EMI滤波器设计.pdf
  17. ubuntu16.04外接显示器扩展屏幕设置
  18. java古典兔子问题(java50道经典编程题)
  19. 独立站快速启动到起量的秘诀
  20. USB接口Altium designer原理图PCB封装

热门文章

  1. 基于SRS搭建RTMP直播流媒体服务器
  2. idea导入项目之后没法运行的解决办法
  3. 美丽的清晨,美好的开始
  4. 【24-业务开发-基础业务-品牌管理-图片管理-阿里云OSS服务开通和使用-阿里云OSS服务API使用-SpringCloudAlibaba OSS服务的使用】
  5. echarts 风向图表
  6. dvwa如何打开_DVWA安装教程
  7. Python数据分析实战【九】:用Python处理省份城市编码数据【文末源码地址】
  8. matlab输出李萨育图形,李萨如图形的详解与应用
  9. 自学软件测试的面试经验(一)~
  10. NodeMCU-刷写AT固件