C++读写Excel表格之小白入门教程

C++读写Excel表格教程 二、ExcelRW类源代码 1、ExcelRW.h2、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));//另存为 else m_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表格之小白入门教程

发表回复

提供最优质的资源集合

立即查看 了解详情