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表格教程相关推荐
- C++读写Excel表格之小白入门教程
C++读写Excel表格教程 二.ExcelRW类源代码 1.ExcelRW.h 2.ExcelRW.cpp 二.使用教程 1.复制文件到工程路径下 2.在工程项目中添加ExcelRW类 3.在对话框 ...
- java使用jxl包读写excel表格文件,即xls格式文件
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用jxl包读写excel表格文件,即xls格式文件 本实例演示使用jxl包实现对excel文件的操作,下载 测试代码 public st ...
- Python读写Excel表格,就是这么简单粗暴又好用(文末免费送资料)
最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书上看 ...
- 使用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来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...
- python怎么安装xlrd库_Python第三方库xlrd/xlwt的安装与读写Excel表格
前言 相信大家都应该有所体会,在平时经常会遇到处理 Excel 表格数据的情况,人工处理起来实在是太麻烦了,我们可以使用 Python 来解决这个问题,我们需要两个 Python 扩展, xlrd 和 ...
最新文章
- Mui Webview下来刷新上拉加载实现
- mysql索引无效且sending data耗时巨大原因分析
- angular i18n 国际化 多语言
- 虚拟局域网(VLAN)的管理
- OJ1020: 两整数排序
- python开发--ModuleNotFoundError: No module named 'pyaudio'
- 程序员高工资是靠汗水和勤奋换来的,想拿高工资入门学习很重要
- lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
- java银行叫号课程设计_《银行排队叫号系统设计》课程设计.doc
- 用计算机算加班,加班工资计算器
- 安装Windows系统时进行磁盘格式化及分区等操作
- 常见web中间件及其漏洞概述
- 算法设计与分析第七章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
- 当更高性能来到平板 — ThinkPad X1 Tablet Evo 长测
- 花三分钟,一起了解一下消费全返模式是怎么样的?消费者又消费又赚钱
- linux环境查看cpu是否开启睿频
- Visual Studio 2008 工作环境 切换
- java单例模式的应用场景_java项目中单列模式适用于什么场景?
- 小米红米6Pro解BL锁教程申请BootLoader解锁教程
- Mac下command+R和shift+command+R的区别,在线恢复模式的选择