VC++、MFC中操作excel时,Range.Cells和Worksheet.Cells的区别是什么?

一、变量定义

cpp 复制代码
CApplication app;          //Excel应用程序接口
CWorkbooks books;         //工作薄集合
CWorkbook book;          //工作薄
CWorksheets sheets;         //工作表集合
CWorksheet sheet;          //工作表
CRange range;                 //Excel中针对单元格的操作都应先获取其对应的Range对象
CFont0 font;
CRange cols;
CRange iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant	covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

二、初始化

cpp 复制代码
//初始化
if (!app.CreateDispatch("Excel.Application"))
{
	this->MessageBox("无法创建Excel应用!");
	return;
}

app.put_Visible(FALSE);     //可见
app.put_UserControl(TRUE); //用户可控制

//打开XLS文件
books.AttachDispatch(app.get_Workbooks());
lpDisp = books.Open("C:\\test\\excel\\test.xlsx",
	covOptional, covOptional, covOptional, covOptional, covOptional,
	covOptional, covOptional, covOptional, covOptional, covOptional,
	covOptional, covOptional, covOptional, covOptional);

book.AttachDispatch(lpDisp);
sheets.AttachDispatch(book.get_Worksheets());

三、Range.Cells

1、用途

返回一个 Range 对象,它表示指定区域中的单元格

2、备注

返回值为由单个单元格组成的 Range,它允许结合使用 Item 版本与两个参数,并让 For Each 循环遍历单个单元格。

Range 的默认成员将包含参数的调用转发至 Item 属性,因此,可以将行和列索引指定在紧跟 Cells 关键字之后,而不是显式调用 Item。

如果使用 Cells 但不使用对象限定符,则等效于 ActiveSheet.Cells。

3、示例

下列代码是返回当前sheet中指定单元格(例中当前使用单元格)的rang对象

cpp 复制代码
LPDISPATCH lpSheets = sheets.get_Item(_variant_t(1));
sheet.AttachDispatch(lpSheets);
range.AttachDispatch(sheet.get_UsedRange());
range.get_Cells();

Worksheet.Cells

微软参考说明

用途

返回一个 Range 对象,该对象表示工作表上的所有单元格 (而不仅仅是当前正在使用) 的单元格。

备注

Range 的默认成员将包含参数的调用转发至 Item 属性,因此,可以将行和列索引指定在紧跟 Cells 关键字之后,而不是显式调用 Item。

在不使用对象识别符的情况下,使用此属性将返回一个 Range 对象,它代表活动工作表中所有的单元格。

3、示例

下列代码是返回整个sheet的单元格rang对象

cpp 复制代码
LPDISPATCH lpSheets = sheets.get_Item(_variant_t(1));
sheet.AttachDispatch(lpSheets);
sheet.get_Cells();
相关推荐
kyle~13 分钟前
计算机系统---USB的四种传输方式
运维·c++·计算机系统
小龙报37 分钟前
《算法通关指南数据结构和算法篇(4)--- 队列和queue》
c语言·开发语言·数据结构·c++·创业创新·学习方法·visual studio
打不了嗝 ᥬ᭄44 分钟前
【Linux】网络层协议
linux·网络·c++·网络协议·http
LilySesy1 小时前
ABAP+在select的时候,可以A=B A=C B=C这样子JOIN吗?
数据库·sql·ai·excel·sap·abap
feiyangqingyun1 小时前
Qt/C++编写GB28181服务/前后端分离/定义一套交互协议/视频点播/录像回放和控制/警情通知
c++·qt·交互
m0_748248021 小时前
C++与C#布尔类型深度解析:从语言设计到跨平台互操作
c++·stm32·c#
虾米Life2 小时前
基于微服务脚手架的视频点播系统 (仿B站) [客户端] -1
c++·qt·微服务·架构
落羽的落羽2 小时前
【C++】现代C++的新特性constexpr,及其在C++14、C++17、C++20中的进化
linux·c++·人工智能·学习·机器学习·c++20·c++40周年
CAU界编程小白3 小时前
数据结构系列之十大排序算法
数据结构·c++·算法·排序算法
头发还没掉光光3 小时前
Linux网络初始及网络通信基本原理
linux·运维·开发语言·网络·c++