VSTO(C#)Excel开发9:处理格式和字体

server/2025/3/17 14:10:58/

初级代码游戏的专栏介绍与文章目录-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博客


(这里是文档结束) 


http://www.ppmy.cn/server/175714.html

相关文章

【贪心算法4】

力扣452.用最少数量的剪引爆气球 链接: link 思路 这道题的第一想法就是如果气球重叠得越多那么用箭越少&#xff0c;所以先将气球按照开始坐标从小到大排序&#xff0c;遇到有重叠的气球&#xff0c;在重叠区域右边界最小值之前的区域一定需要一支箭&#xff0c;这道题有两…

基础输入输出技术深度解析与实践指南

1.理解文件 1-1 狭义理解 • ⽂件在磁盘⾥。 • 磁盘是永久性存储介质&#xff0c;因此⽂件在磁盘上的存储是永久性的。 • 磁盘是外设&#xff08;即是输出设备也是输⼊设备&#xff09;。 • 磁盘上的⽂件 本质是对⽂件的所有操作&#xff0c;都是对外设的输⼊和输出 简称 I…

【Java代码审计 | 第十四篇】MVC模型、项目结构、依赖管理及配置文件概念详解

未经许可&#xff0c;不得转载。 文章目录 MVC模型模型&#xff08;Model&#xff09;视图&#xff08;View&#xff09;控制器&#xff08;controller&#xff09;MVC工作流程 项目结构java目录resources目录webapp目录 依赖管理配置文件 MVC模型 MVC&#xff08;Model-View-…

【C语言】函数和数组实践与应用:开发简单的扫雷游戏

【C语言】函数和数组实践与应用&#xff1a;开发简单的扫雷游戏 1.扫雷游戏分析和设计1.1扫雷游戏的功能说明&#xff08;游戏规则&#xff09;1.2游戏的分析与设计1.2.1游戏的分析1.2.2 文件结构设计 2. 代码实现2.1 game.h文件2.2 game.c文件2.3 test.c文件 3. 游戏运行效果4…

Blender-MCP服务源码5-BlenderSocket插件安装

Blender-MCP服务源码5-BlenderSocket插件安装 上一篇讲述了Blender是基于Socket进行本地和远程进行通讯&#xff0c;现在尝试将BlenderSocket插件安装到Blender中进行功能调试 1-核心知识点 将开发的BlenderSocket插件安装到Blender中 2-思路整理 1&#xff09;将SocketServe…

自探索大语言模型微调(一)

一、数据 1.1、失败案例 Hugging Face&#xff1a; 根据B站上搜索到的资料&#xff0c;datasets这个库可以直接下载丰富的数据集合和与训练模型&#xff0c;调用也非常的简单&#xff0c;唯一的缺点就是&#xff0c;需要外网&#xff08;翻墙&#xff09;&#xff0c;用国内的…

Excel单元格中插入自定义超链接

Excel单元格中插入自定义超链接 方法一、插入静态自定义超链接 适用场景: 手动设置固定显示文本和链接地址 快捷键 Ctrl K 可显示插入超链接窗口. 方法二、适用HYPERLINK函数动态生成超链接 跳转到超链接 HYPERLINK("https://www.bilibili.com/?","CS…

招聘信息|基于SprinBoot+vue的招聘信息管理系统(源码+数据库+文档)

招聘信息管理系统 目录 基于SprinBootvue的招聘信息管理系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 5.3企业后台管理模块 5.4用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…