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. C++读写Excel表格之小白入门教程

    C++读写Excel表格教程 二.ExcelRW类源代码 1.ExcelRW.h 2.ExcelRW.cpp 二.使用教程 1.复制文件到工程路径下 2.在工程项目中添加ExcelRW类 3.在对话框 ...

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

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

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

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

  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来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...

  10. python怎么安装xlrd库_Python第三方库xlrd/xlwt的安装与读写Excel表格

    前言 相信大家都应该有所体会,在平时经常会遇到处理 Excel 表格数据的情况,人工处理起来实在是太麻烦了,我们可以使用 Python 来解决这个问题,我们需要两个 Python 扩展, xlrd 和 ...

最新文章

  1. Mui Webview下来刷新上拉加载实现
  2. mysql索引无效且sending data耗时巨大原因分析
  3. angular i18n 国际化 多语言
  4. 虚拟局域网(VLAN)的管理
  5. OJ1020: 两整数排序
  6. python开发--ModuleNotFoundError: No module named 'pyaudio'
  7. 程序员高工资是靠汗水和勤奋换来的,想拿高工资入门学习很重要
  8. lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
  9. java银行叫号课程设计_《银行排队叫号系统设计》课程设计.doc
  10. 用计算机算加班,加班工资计算器
  11. 安装Windows系统时进行磁盘格式化及分区等操作
  12. 常见web中间件及其漏洞概述
  13. 算法设计与分析第七章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
  14. 当更高性能来到平板 — ThinkPad X1 Tablet Evo 长测
  15. 花三分钟,一起了解一下消费全返模式是怎么样的?消费者又消费又赚钱
  16. linux环境查看cpu是否开启睿频
  17. Visual Studio 2008 工作环境 切换
  18. java单例模式的应用场景_java项目中单列模式适用于什么场景?
  19. 小米红米6Pro解BL锁教程申请BootLoader解锁教程
  20. Mac下command+R和shift+command+R的区别,在线恢复模式的选择

热门文章

  1. 随机排列算法(Fisher-Yates)
  2. Java使用蔡勒公式快速计算某一天是星期几
  3. Java 基本数据类型总结
  4. 第三天---网络系统硬件
  5. 【Android项目实战 | 从零开始写app(一)】 创建项目
  6. 操作系统基础知识复习总结
  7. windows 10 删除远程桌面连接IP记录
  8. 删除Windows10系统远程桌面的连接记录
  9. fastdfs 集群配置
  10. 前端电子时钟字体引入