VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码指引:github源码指引_初级代码游戏的博客-CSDN博客
前一篇VSTO(C#)Excel开发2:Excel对象模型和基本操作-CSDN博客
前一篇我们已经知道可以获取行和列的集合并得到行和列的个数,但是还没有注意到行和列竟然是Range对象。什么都是Range这一点埋下了很多坑。
本篇我们来设置列宽和行高。
目录
一、确认UsedRange
1.1 编写测试代码
2.2 Range的几个属性
2.3 运行测试
二、设置列宽和行高
2.1 编写测试代码
2.2 Range相关的属性
2.3 WorkSheet获取行和列
2.4 运行测试
三、自动调整列宽和行高

一、确认UsedRange
1.1 编写测试代码
我们已经知道UsedRange是用到的范围,但是没有内容的单元格算不算呢?
我们来用程序验证一下,就像第一篇的操作一样,先增加一个按钮“button2”:

在设计器双击按钮生成按钮的事件代码,然后添加内容如下:
private void button2_Click(object sender, RibbonControlEventArgs e){string str = "开始操作。。。。。。\n";try{Range usedRange = Globals.ThisAddIn.Application.ActiveSheet.UsedRange;str += " UsedRange:" + usedRange.Address + "\n";str += " UsedRange.Column:" + usedRange.Column + "\n";str += " UsedRange.Columns.Count:" + usedRange.Columns.Count + "\n";str += " UsedRange.Row:" + usedRange.Row + "\n";str += " UsedRange.Rows.Count:" + usedRange.Rows.Count + "\n";str += "操作成功完成\n";}catch (Exception ex){MessageBox.Show(ex.ToString());}MessageBox.Show(str);}
2.2 Range的几个属性
- Address 单元格范围
- Column 第一个列的编号(从1开始)
- Columns 列的集合(Range),Columns.Count即列的个数
- Row 第一个行的编号(从1开始),Rows.Count即行的个数
2.3 运行测试
编译运行,新建空工作簿,执行button2:

虽然新建空工作簿什么都没有,UsedRange返回的是第一个单元格。
然后我们执行一下button1,这个按钮会自动生成一些内容,然后再执行button2:

现在显示的范围是A1到C10,符合预期。
再选中左上角的几个单元格:

按一下键盘的“del”键删除,然后再执行buffton2:

删掉的单元格没有出现在UsedRange里。
现在我们给一个空单元格加上边框:

再执行button2:
现在设置格式的格子也在UsedRange里面了。再改回无边框也没用,还是在UsedRange里面。
实测拉宽列不会导致列出现在UsedRange里。
二、设置列宽和行高
2.1 编写测试代码
将刚才的代码增加点内容,替换成如下代码:
private void button2_Click(object sender, RibbonControlEventArgs e){string str = "开始操作。。。。。。\n";try{Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;Range usedRange = worksheet.UsedRange;str += " UsedRange:" + usedRange.Address + "\n";str += " UsedRange.Column:" + usedRange.Column + "\n";str += " UsedRange.Columns.Count:" + usedRange.Columns.Count + "\n";str += " UsedRange.Row:" + usedRange.Row + "\n";str += " UsedRange.Rows.Count:" + usedRange.Rows.Count + "\n";for (int i = 0; i < usedRange.Columns.Count; ++i){Range colum = worksheet.Columns[usedRange.Column + i];colum.ColumnWidth = 15;}for (int i = 0; i < usedRange.Rows.Count; ++i){Range row = worksheet.Rows[usedRange.Row + i];row.RowHeight = 30;}str += "操作成功完成\n";}catch (Exception ex){MessageBox.Show(ex.ToString());}MessageBox.Show(str);}
增加了设置列宽和行高的代码。
2.2 Range相关的属性
- ColumnWidth 列宽,以标准字符宽度为单位(大概就是英文字符的意思吧),设置时全部设置为同一值,获取时如果不一致返回空(这谁想出来的啊?)
- RowHeight 行高,以像素为单位(这又是谁想出来的啊,宽和高的单位不一样),坑是一样的,如果多个行的行高不一致返回空
2.3 WorkSheet获取行和列
- Columns[i],i是基于1的索引
- Rows[i],i是基于1的索引
2.4 运行测试
编译运行,先执行button1再执行button2:

看到有数据的区域的宽和高都修改了。
三、自动调整列宽和行高
使用Range的AutoFit方法即可,按照官方文档是设置列宽“或”设置行高,我直接替换上面的代码,因此只是对单一列或单一行操作,都是有效的。
代码如下:
for (int i = 0; i < usedRange.Columns.Count; ++i){Range colum = worksheet.Columns[usedRange.Column + i];colum.ColumnWidth = 15;//被下一句覆盖colum.AutoFit();}for (int i = 0; i < usedRange.Rows.Count; ++i){Range row = worksheet.Rows[usedRange.Row + i];row.RowHeight = 30;//被下一句覆盖row.AutoFit();}
动手拉拉宽度,再执行能更清楚地看到效果。
(这里是文档结束)
相关文章:
VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
【2025】Electron + React 架构筑基——从零到一的跨平台开发
引言 源代码仓库: Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status,却依然无法直观看到文件变化? 是否羡慕VS Code的丝滑Git集成,却苦恼于无法定制自己的专属工具? 本专栏将为你打开一扇新的…...
AWS 如何导入内部SSL 证书
SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…...
清华北大推出的 DeepSeek 教程(附 PDF 下载链接)
清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf 北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf 清华 Deep…...
【空地协同技术教程:概念与技术手段解析】
空地协同技术教程:概念与技术手段解析 一、空地协同的概念与核心价值 定义 空地协同(Air-Ground Collaboration)是指通过无人机(UAV)与无人车(UGV)等异构平台的跨域协作,利用各自的…...
【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)
2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考,小编特意收集并整理了最新版(备考2025年3月)的小黑课堂计算机二级WPS 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...
蓝桥杯备赛:炮弹
题目解析 这道题目是一道模拟加调和级数,难的就是调和级数,模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程,可能出现来回跳的情况,那么为了解决这种情况,我们采取的方法是设定其的上限步数。那么…...
kotlin高级用法总结
Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...
transformers - AWQ
本文翻译整理自:https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言 Activation-aware Weight Quantization (AWQ) 激活…...
mysql下载与安装、关系数据库和表的创建
一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统ÿ…...
在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换
在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换。以下是VLAN接口下配置VRRP与BFD的步骤: 目录 1. 配置BFD会话 2. 配置VLAN接口 3. 配置VRRP 4. 验证配置 5. 保存配置 1. 配置BFD会话 在两台设备之间配置BFD会话,…...
RK3588开发笔记-fiq_debugger: cpu 0 not responding, reverting to cpu 3问题解决
目录 前言 一、FIQ Debugger介绍 二、rockchip平台配置方法 三、问题分析定位 IRQF_NOBALANCING 的含义 总结 前言 在进行 RK3588 开发的过程中,我们可能会遇到各种棘手的问题。其中,“fiq_debugger: cpu 0 not responding, reverting to cpu 3” 这个错误出现在RK3588的…...
新能源汽车充电综合解决方案:安科瑞电气助力绿色出行
安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展,充电基础设施的建设成为了推动行业进步的关键。然而,充电技术滞后、运营效率低下、车桩比失衡等问题,依然困扰着广大车主和运营商。今天,我们要为大家介绍一款新能源汽车充电…...
大语言模型进化论:从达尔文到AI的启示与展望
文章大纲 引言大语言模型中的“进化论”思想体现遗传变异过度繁殖和生存斗争大模型“过度繁殖”与“生存竞争”机制解析**一、过度繁殖:技术迭代的指数级爆发****二、生存竞争:计算资源的达尔文战场****三、生存竞争胜出关键要素****四、行业竞争格局演化趋势**核心结论自然选…...
Spring Boot与Axon Framework整合教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 简介 Axon Framework是一个用于构建CQRS(命令查询职责分离)和事件溯源(Event Sourcing)应用的框架࿰…...
深度学习Dropout
一、概念 Dropout是为了解决过拟合,当层数加深,就有可能过拟合,这个时候模型太复杂就会过拟合,那么可以让模型变得简单一点,所以就可以随机挑一些神经元,让某些神经元的输出是0,只保留部分神经…...
2025华为OD机试真题E卷 - 螺旋数字矩阵【Java】
题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。小明对这个矩阵有些要求: 1、…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
Linux驱动开发(1.基础创建)
序言:从高层逻辑到底层硬件的回归 在当今的软件开发中,我们习惯于用高级语言构建抽象层——通过框架、库和云服务快速实现功能。这种“软逻辑”的便利性让开发效率倍增,却也逐渐模糊了我们对计算机本质的认知:一切代码终将落地为…...
mmseg
系列文章目录 文章目录 系列文章目录bug bug File "/public/home/rsinfo/project/mmsegmentation/mmseg/__init__.py", line 61, in <module>assert (mmcv_min_version < mmcv_version < mmcv_max_version), \ AssertionError: MMCV2.2.0 is used but i…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
