当前位置: 首页 > article >正文

MFC中Excel的导入以及使用步骤

参考地址
右击项目出现“类向导”界面
添加类中选择“类型库中的MFC类”点击类向导,找到可用的类型库为Excel的库

在接口中选择对应类添加到右侧生成的类中后点击完成
添加完成后项目中出现以上头文件
在需要对EXCEL表进行操作的类中添加以下头文件:若出现大量错误将其放入stdafx.h中

#include "resource.h"       // 主符号
#include "CWorkbook.h"		//单个工作簿
#include "CRange.h"			//区域类,对Excel大部分操作都需要
#include "CWorkbooks.h"		//管理所有工作簿
#include "CApplication.h"	//Excel应用程序类,管理整个Excel应用

在类中添加以下变量定义:

	//定义Excel中需要的工作簿以及工作表等
	CApplication m_App;
	CWorkbooks	m_Books;
	CWorkbook	m_Book;
	CWorksheets m_Sheets;
	CWorksheet	m_Sheet;
	CRange		m_Range;

然后就可以封装对应函数,以下为打开Excel表的例子,一般包括Excel的读写:

//打开Excel表
int	CExcel_TestApp::OpenExcel(CString FileName)
{
	HRESULT Hr;//HRESULT函数返回值
	Hr = CoInitialize(NULL);//CoInitialize告诉Windows以单线程方式创建com对象
	if (FAILED(Hr))
	{
		AfxMessageBox(_T("调用函数失败!"));
	}
	LPDISPATCH LpDisp;
	COleVariant CovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
	if (!m_App.CreateDispatch(_T("Excel.Application"), NULL))
	{
		AfxMessageBox(_T("无法启动EXCEL服务器!"));
		return 0;
	}
	m_Books.AttachDispatch(m_App.get_Workbooks);//得到工作簿
	LpDisp = m_Books.Open(FileName, CovOptional, CovOptional, CovOptional, CovOptional,
		CovOptional, CovOptional, CovOptional, CovOptional, CovOptional,
		CovOptional, CovOptional, CovOptional, CovOptional);
	m_Book.AttachDispatch(LpDisp);//得到单个工作簿
	m_Sheets.AttachDispatch(m_Book.get_Worksheets);//得到工作簿对应的工作表
	LpDisp = m_Book.get_ActiveSheet();//得到当前活跃的工作表
	m_Sheet.AttachDispatch(LpDisp);//获取到表
	return 1;
	}

若运行出错,将导入的所有包含#import “C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE” no_namespace头文件中的注释,将CRange.h中的DialogBox改为_DialogBox;

int	MFC_OpenExcel::OpenExcel(CString FileName)
{
	HRESULT Hr;//HRESULT函数返回值
	Hr = CoInitialize(NULL);//CoInitialize告诉Windows以单线程方式创建com对象
	if (FAILED(Hr))
	{
		AfxMessageBox(_T("调用函数失败!"));
	}
	LPDISPATCH LpDisp;
	COleVariant CovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
	if (!m_App.CreateDispatch(_T("Excel.Application"), NULL))
	{
		AfxMessageBox(_T("无法启动EXCEL服务器!"));
		return 0;
		}
	m_Books=m_App.get_Workbooks();//得到工作簿
	LpDisp = m_Books.Open(FileName, CovOptional, CovOptional, CovOptional, CovOptional,
		CovOptional, CovOptional, CovOptional, CovOptional, CovOptional,
		CovOptional, CovOptional, CovOptional, CovOptional, CovOptional);
	m_Book.AttachDispatch(LpDisp);//得到单个工作簿
	m_Sheets=m_Book.get_Worksheets();//得到工作簿对应的工作表
	LpDisp = m_Book.get_ActiveSheet();//得到当前活跃的工作表
	m_Sheet.AttachDispatch(LpDisp);//获取到表
	return 1;
	}

http://www.kler.cn/a/388801.html

相关文章:

  • NAT网络工作原理和NAT类型
  • 车载空气净化器语音芯片方案
  • C++,STL 054(24.11.13)
  • springboot 之 整合springdoc2.6 (swagger 3)
  • 【学习笔记】数据结构(七)
  • LeetCode【0027】移除元素
  • 模型 用户画像
  • 原子操作 std::atomic
  • M芯片Mac构建Dockerfile - 注意事项
  • 华为OD机试 - 称砝码 (Java 2024 E卷 100分)
  • 利用Langchain构建网页内容摘要Agent
  • 【日记】总感觉搞这些才回到了自己的老本行……(1179 字)
  • IDE使用技巧与插件推荐:提升开发效率的秘籍
  • 【01课_初识算法与数据结构】
  • 2024 United Kingdom and Ireland Programming Contest (AIKL)
  • 【初阶数据结构与算法】沉浸式刷题之顺序表练习(顺序表以及双指针两种方法)
  • 微服务mysql,redis,elasticsearch, kibana,cassandra,mongodb, kafka
  • 从0开始深度学习(25)——多输入多输出通道
  • Logrus入门
  • python练习-可视化
  • xss的过滤和绕过(2)
  • 船舶AIS轨迹聚类算法(附python源码)
  • unity下添加c#脚本
  • Seldon Core大模型部署详解
  • 如何在vscode中安装git详细新手教程
  • 快速上手 muduo