VSTO(C#)Excel开发9:处理格式和字体
初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码指引:github源码指引_初级代码游戏的博客-CSDN博客
上一篇VSTO(C#)Excel开发8:打包发布安装卸载-CSDN博客
如果动态生成内容,处理格式是必要的。
目录
一、字体Font
二、Style
三、处理字号Range.Font.Size
四、一些技术点
4.1 获取打印范围和删除单元格
4.2 代码获取打印区域
4.3 判断缩放状态
4.4 使用Cells

一、字体Font
字体Font对象描述字体,常用的属性如下:
- Blod 粗体
- Color 颜色
- Italic 斜体
- Shadow 阴影
- Size 字号
- Subscript 下标
- Superscript 上标
- Underline 下划线
通过Range对象的Font属性就可以设置一个单元格或一批单元格的字体。
二、Style
Range对象还包含一个Style,Style也有个属性叫Font,也可以修改,不过修改Style修改的是风格而不是单元格,对风格的修改将影响到所有使用此风格的内容。
比如对默认风格的修改不仅影响单元格内容,还将影响到列名和行号。
三、处理字号Range.Font.Size
以下代码可以对一个Range设置字号为10:
Range printRange = 。。。。。。;printRange.Font.Size = 10;
Range可以是一个单元格也可以是一批单元格,不论原来字号如何,全部设置为10。
以下代码可以增加或减小每个单元格的字号:
private void changeFontSize(int n){try{Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;Range printRange = GetPrintRange(worksheet);for (int row = 0; row < printRange.Rows.Count; ++row){for (int col = 0; col < printRange.Columns.Count; ++col){Range cell = worksheet.Cells[printRange.Column + col, printRange.Row + row];cell.Font.Size += n;}}}catch (Exception ex){MessageBox.Show(ex.ToString());}}
其中GetPrintRange是获取打印区域的函数,与关键功能没有关系。
四、一些技术点
4.1 获取打印范围和删除单元格
默认打印范围是UsedRange,但是我们已经知道删除内容并没有完全删除单元格,如果设置过格式,单元格仍然是存在的。
单元格完全的删除不是用delete键,而是用右键-删除,会有下面的提示:

这样删除的才是完全删除。
如果设置了PageSetup.PrintArea,则打印范围为设置的值,如果表单里面有些辅助的不想打印的单元格(比如用来提供选项列表的),或者不想费事删掉多余的空白单元格,设置打印区域就可以了:

“设置打印区域”就将当前选中的所有单元格设置为打印区域。“取消打印区域”就恢复为默认打印区域。
4.2 代码获取打印区域
代码很简单,PrintArea存在就用PrintArea,没有就用UsedRange。
private Range GetPrintRange(Worksheet worksheet){if (null != worksheet.PageSetup.PrintArea && worksheet.PageSetup.PrintArea.Length > 0) return worksheet.get_Range(worksheet.PageSetup.PrintArea);else return worksheet.UsedRange;}
4.3 判断缩放状态
缩放Zoom是dynamic类型,而且确实是动态的。
如果Zoom为false,则Fit……属性起作用,否则Zoom就是个数字。(咋想的?)
所以判断Zoom的代码比较复杂:
Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;if (worksheet.PageSetup.Zoom.GetType() == false.GetType() && worksheet.PageSetup.Zoom == false)//动态类型,可能是数字或bool{if (MessageBox.Show("当前是自动调整模式,必须以缩放模式调整,将设置为100%缩放模式(无缩放)继续吗?", "当前缩放" + worksheet.PageSetup.Zoom, MessageBoxButtons.OKCancel) != DialogResult.OK){return;}worksheet.PageSetup.Zoom = 100;}
Zoom为100对应打印设置的“无缩放”,其它值对应“自定义”,界面上选择其它选项都会自动把Zoom设置为false:

4.4 使用Cells
之前我们说过Cells.Count会抛出异常,不过Cells[列号,行号]是可以访问单元格的,这是比较方便的,符合我们对二位数组的理解(不过行号列号都是从1开始的)。
下一篇 VSTO(C#)Excel开发10:启动和卸载顺序 事件处理-CSDN博客
(这里是文档结束)
相关文章:
VSTO(C#)Excel开发9:处理格式和字体
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
LinkedList底层结构和源码分析(JDK1.8)
参考视频:韩顺平Java集合 特点 LinkedList 底层实现了 双向链表 和 双端队列 的特点。可以添加任意元素(元素可以重复),包括 null。线程不安全,没有实现同步。 LinkedList 底层结构 LinkedList 底层维护了一个双向链…...
数字内容体验的技术支柱是什么?
数据分析引擎构建基础 数字内容体验的技术底座始于对海量用户行为数据的深度解析。作为技术体系的根基,数据分析引擎通过实时采集、清洗与结构化处理,将分散的点击轨迹、停留时长及交互偏好转化为可操作的洞察。其核心能力体现在三方面:一是…...
C# 使用Markdown2Pdf把md文件转换为pdf文件
NuGet安装Markdown2Pdf库,可以把格式简单markdown文件转换为pdf。但该库用了Puppeteer Sharp,因此会在运行过程中提示指定Chrome浏览器路径或自动下载Chrome浏览器。 代码如下: using Markdown2Pdf;var converter new Markdown2PdfConverte…...
专家系统如何运用谓词逻辑进行更复杂的推理
前文,我们讲解了命题逻辑和谓词逻辑的基本概念、推理规则、应用以及一些简单的示例。具体内容可以先看我的文章:人工智能的数学基础之命题逻辑与谓词逻辑(含示例)-CSDN博客 那么形如专家系统这类复杂系统,是如何通过谓…...
html css网页制作成品——糖果屋网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Ubuntu上部署Flask+MySQL项目
一、服务器安装python环境 1、安装gcc(Ubuntu默认已安装) 2、安装python源码 wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz 3、安装Python依赖库 4、配置python豆瓣源 二、服务器安装虚拟环境 1、安装virtualenv pip3.10 ins…...
落雪音乐Pro 8.8.6 | 内置8条音源,无需手动导入,纯净无广告
洛雪音乐Pro版内置多组稳定音源接口,省去手动导入的繁琐操作,安装即可畅听海量音乐。延续原版无广告的纯净体验,支持歌单推荐与音源切换,满足个性化听歌需求。此版本仅支持在线播放,无法下载音乐,且与原版不…...
什么是全栈?
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点下班 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 📃文章前言 🔷文章均为学习工…...
一些docker命令
一、基础命令 查看 Docker 版本 docker --version 或 docker version:显示 Docker 客户端和服务器的版本信息。 查看 Docker 系统信息 docker info:显示 Docker 系统的详细信息,包括镜像、容器数量、存储驱动类型等。 Docker 服务管理 s…...
《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成
《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成 引言:AI 计算的新曙光 在当今科技飞速发展的时代,人工智能(AI)无疑是最为耀眼的领域之一。从语音助手到自动驾驶,从图像…...
OpenCV实现图像特征提取与匹配
一、特征检测与描述子提取 选择特征检测器 常用算法包括: ORB:一种高效的替代SIFT和SURF的算法,主要用于移动机器人和增强现实等领域。适合实时应用,结合FAST关键点与BRIEF描述子。SIFT(尺度不变特征变…...
将分支`XXX`合并到远程分支`master
将分支feat-task合并到远程分支master 首先,切换到本地的 master 分支 git checkout master确保你的本地 master 分支是最新的,拉取远程的更新 git pull origin master将 feat-task 分支的代码合并到 master 分支 git merge feat-task如果在合并过程…...
程序化广告行业(13/89):DSP的深入解析与运营要点
程序化广告行业(13/89):DSP的深入解析与运营要点 大家好!一直以来,我都对程序化广告行业保持着浓厚的学习兴趣,在探索的过程中积累了不少心得。今天就想把这些知识分享出来,和大家一起学习进步…...
XML文件格式的简介及如何用Python3处理XML格式对象
诸神缄默不语-个人技术博文与视频目录 文章目录 1. XML格式简介2. 格式化XML文件的工具3. Python处理XML:xml库1. xml.etree.\(c\)ElementTree2. xml.dom.minidom 4. 本文撰写过程中参考的其他网络资料 1. XML格式简介 可扩展标记语言 (Extensible Markup Language…...
通过qemu仿真树莓派系统调试IoT固件和程序
通过qemu仿真树莓派系统调试IoT固件和程序 本文将介绍如何使用 QEMU 模拟器在 x86 架构的主机上运行 Raspberry Pi OS(树莓派操作系统)。我们将从下载镜像、提取内核和设备树文件,到启动模拟环境,并进行一些常见的操作࿰…...
Oracle底层原理解析
Oracle 解析 1、union \ union all \ Intersect \ Minus内部处理机制(优化) 当查询语句中的where子句中使用到or时,可以用union all来代替。因为使用or查询语句的时候,引起全表扫描,并走索引查询 特别:当…...
深度解读DeepSeek部署使用安全(48页PPT)(文末有下载方式)
深度解读DeepSeek:部署、使用与安全 详细资料请看本解读文章的最后内容。 引言 DeepSeek作为一款先进的人工智能模型,其部署、使用与安全性是用户最为关注的三大核心问题。本文将从本地化部署、使用方法与技巧、以及安全性三个方面,对Deep…...
【前端三剑客】万字总结JavaScript
一、初识JavaScript 1.1 JavaScript 的作用 表单动态校验(密码强度检测) ( JS 产生最初的目的 )网页特效服务端开发(Node.js)桌面程序(Electron)App(Cordova)控制硬件-物联网(Ruff)游戏开发(cocos2d-js) 1.2 HTML/CSS/JS 的关系…...
【哈希表与字符串的算法之路:思路与实现】—— LeetCode
文章目录 两数之和面试题01.02.判定是否为字符重排存在重复元素存在重复元素||字母异位词分组最长公共前缀和最长回文子串二进制求和字符串相乘 两数之和 这题的思路很简单,在读完题目之后,便可以想到暴力枚举,直接遍历整个数组两遍即可&…...
基于Android的记事本APP设计与实现:从需求分析到功能实现(超级简单记事本,附源码+文档报告)
基于Android的记事本APP设计与实现:从需求分析到功能实现 (以前大学课堂作业,抄在这里当个回忆吧) 引言 随着社会的不断进步,信息化建设不断发展,电子文字输入在生活、学习、工作中占有越来越重要的作用…...
eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN侧uplink接口、FE接口、GE接口介绍
路由器常见接口的详细介绍及其应用示例: 1. CON/AUX 接口 全称:Console/Auxiliary(控制台/辅助接口)作用: CON(Console):通过命令行界面(CLI)直接配置路由器…...
Hello Mr. My Yesterday日文歌词附假名注音,祭奠逝去的青春
hello mr. my yesterday Hundred Percent Free Hello Mr. my yesterday云っておくれよ “夢叶うその瞬間にまた逢える”と 前方の幾多前途多難の未知 後方の道後悔も知った 経験と価値 夢なかば 一本の道結果だが ひとつだけ知りたいよ 神様がいるのなら “幸せの定義っ…...
ubuntu ollama+dify实践
安装ollama 官网的指令太慢了,使用以下指令加速: export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download" curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/dow…...
S7-1200 G2移植旧版本S7-1200程序的具体方法示例
S7-1200 G2移植旧版本S7-1200程序的具体方法示例 前期概要: S7-1200 G2必须基于TIA博途V20,之前的程序可通过移植的方式在新硬件上使用。 该移植工具可自动将TIA Portal 项目从 S7-1200 移植到更新的S7-1200 G2。 注意: 该插件支持在同一TIA Portal项目实例内将软件和/或硬…...
新办公室哪款空气净化器除甲醛效果好?高效除甲醛,提升效率
现代办公环境中,空气质量对员工的健康与工作效率产生着不可忽视的影响。尤其是新装修的办公室,往往因为空气中的甲醛浓度超标而导致一系列健康问题。因此,选择一款性能优越的除甲醛空气净化器就显得尤为重要。合适的空气净化器不仅可以有效过…...
塑造企业数字化形象:企业信息化UI界面设计的关键要素
引言 在数字化转型的大潮中,企业信息化系统的UI(用户界面)界面设计不仅是技术实现的最后一环,更是塑造企业数字化形象、提升用户体验、增强业务效率的重要手段。优秀的UI设计能够直观展现企业价值观,提升用户粘性&…...
大视频背景暗黑风格的wordpress企业主题免费下载
整体风格是黑色的,首页首屏大视频背景,动态效果非常好。向下滚动时,滚动的特效也不错。 原文 https://www.bixugao.com/wp/26.html...
CUDA编程之内存零拷贝技术
一、实现原理 零拷贝内存通过将主机锁页内存直接映射到设备地址空间,实现CPU与GPU共享内存,避免显式数据拷贝。锁页内存通过cudaHostAlloc或cudaHostRegister分配,确保物理地址固定且不被操作系统换页,从而支持DMAÿ…...
C语言基础知识04
指针 指针概念 指针保存地址,地址是字节的编号 指针类型和保存的地址类型要一直 使用时注意,把地址转换为&变量的格式来看 int a[3]; a转为&a[0] 指针的大小 64bit 固定8字节, 32bit 固定4字节 指针…...
