C++读写Excel表格之小白入门教程
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表格之小白入门教程相关推荐
- Python读写Excel表格,就是这么简单粗暴又好用(文末免费送资料)
最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书上看 ...
- java使用jxl包读写excel表格文件,即xls格式文件
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用jxl包读写excel表格文件,即xls格式文件 本实例演示使用jxl包实现对excel文件的操作,下载 测试代码 public st ...
- vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...
原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...
- 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用
Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...
- python简单代码编写-python读写Excel表格的实例代码(简单实用)
安装两个库:pip install xlrd.pip install xlwt 1.python读excel――xlrd 2.python写excel――xlwt 1.读excel数据,包括日期等数据 ...
- python读取excel表格-python读写Excel表格的实例代码(简单实用)
安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 ...
- python处理表格很厉害么_Python读写Excel表格,就是这么简单粗暴又好用
关注恋习Python(ID:sldata2017) 这是恋习Python之手把手系列第5篇原创首发文章 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处 ...
- python 写入第二列_python读写Excel表格的实例代码(简单实用)
这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...
- python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用
最近在做一些数据处理和计算的工作,因为数据是以.CSV格式保存的,因此刚开始直接用Excel来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...
最新文章
- boost::histogram::axis::option用法的测试程序
- AD9834 DDS 使用经验
- python 导入numpy 导致多进程绑定同一个CPU问题解决方法
- xshell安装mysql步骤_mysql主从复制
- Socket编程实例
- 力扣491. 递增子序列(JavaScript)
- 用户没有create session权限_快速搞懂Oracle 19c安全新特性 (二)Privilege Analysis(权限分析)...
- php错误日志框架,错误与日志 - Laravel - 为 WEB 艺术家创造的 PHP 框架。
- 韦东山嵌入式linux驱动开发,学习嵌入式Linux开发——韦东山升级版全系列嵌入式视频之总线设备驱动模型代码分析...
- 在计算机桌面中选择了隐藏如何显示,怎么把隐藏电脑桌面游戏找到
- Windows10系统 ADMUI3无法删除
- 索引格式的图片在PS软件中无法操作,怎么解决?
- echarts饼图 外圈转动动画 pie
- pythoninput输入数字_python如何保证输入键入数字的方法
- vue+echarts+自适应 实现可视化大屏展示效果
- matlab emi滤波器设计,EMI滤波器设计.pdf
- ubuntu16.04外接显示器扩展屏幕设置
- java古典兔子问题(java50道经典编程题)
- 独立站快速启动到起量的秘诀
- USB接口Altium designer原理图PCB封装