详解C#在Excel单元格中应用多种字体格式
默认情况下,Excel单元格的字体样式仅能应用于整个字符串。若需在同一个单元格内实现多字体混排(如加粗、变色、上下标共存),可利用Spire.XLS组件中的富文本接口进行操作。本文将详细介绍如何通过创建多个ExcelFont实例并应用到指定字符区间来实现这一效果。
准备环境与引用库
在执行代码前,需确保项目中已正确引入Spire.XLS库。根据开发习惯,可选择以下两种安装方式之一:
第1步:手动添加DLL引用
目的:将本地下载的安装包中的程序集添加到项目中。
操作:
- 从官网下载安装包并解压,进入
BIN文件夹找到Spire.Xls.dll。 - 打开 Visual Studio 解决方案资源管理器。
- 右键点击项目下的“引用”,选择“添加引用”。
- 在弹出的窗口中选择“浏览”,定位到 DLL 文件所在路径并完成添加。
第2步:NuGet 包管理器安装
目的:快速管理依赖包版本。
入口:Visual Studio 工具栏 → 工具 → NuGet 包管理器 → 程序包管理器控制台。
- 界面操作:在解决方案资源管理器中右键“引用”→ 管理 NuGet 包 → 搜索
Free Spire.XLS并安装。 - 命令行操作:直接运行以下命令:
Install-Package FreeSpire.XLS -Version 12.2.0
C#实现在同一单元格应用多种字体样式
核心思路是获取单元格的 RichText 属性,该属性支持对长字符串的不同索引区间分别设置 ExcelFont 属性。
第1步:创建Workbook与工作表
初始化工作簿对象并获取第一张工作表的引用。
第2步:定义多种字体样式 (ExcelFont)
通过 wb.CreateFont() 批量创建不同属性的字体对象,包括名称、粗细、样式、颜色、字号以及上下标特性。
第3步:赋值并应用字体到指定区域
给目标单元格(如 A1)填入测试字符串,然后使用 SetFont(startIndex, endIndex, font) 方法,将之前定义的多种样式映射到字符串的特定字符范围。
using Spire.Xls;
namespace AddFormatsToTextInCell
{
class Program
{
static void Main(string[] args)
{
// 1. 创建工作簿与获取工作表
Workbook wb = new Workbook();
Worksheet sheet = wb.Worksheets[0];
// 2. 配置多种独立的字体样式对象
// 字体名称(幼圆)
ExcelFont fontname = wb.CreateFont();
fontname.FontName = "幼圆";
// 下标样式
ExcelFont fontSubscript = wb.CreateFont();
fontSubscript.IsSubscript = true;
// 上标样式
ExcelFont fontsuperscript = wb.CreateFont();
fontsuperscript.IsSuperscript = true;
// 加粗样式
ExcelFont fontBold = wb.CreateFont();
fontBold.IsBold = true;
// 单下划线样式
ExcelFont fontUnderline = wb.CreateFont();
fontUnderline.Underline = FontUnderlineType.Single;
// 倾斜样式
ExcelFont fontItalic = wb.CreateFont();
fontItalic.IsItalic = true;
// 特定颜色样式(Rose)
ExcelFont fontColor = wb.CreateFont();
fontColor.KnownColor = ExcelColors.Rose;
// 字号大小设定 (15pt)
ExcelFont fontsize = wb.CreateFont();
fontsize.Size = 15;
// 3. 向A1单元格写入文本并绑定富文本对象
RichText richText = sheet.Range["A1"].RichText;
richText.Text = "这段文字是测试文字,仅供测试时使用!C6B2幼圆体";
// 4. 针对不同区间的字符应用上述样式
// 索引0-3 (这段文) -> 加粗
richText.SetFont(0, 3, fontBold);
// 索引4-6 (字测) -> 倾斜
richText.SetFont(4, 6, fontItalic);
// 索引7-9 (试文) -> 下划线
richText.SetFont(7, 9, fontUnderline);
// 索引10-13 (字仅) -> 颜色
richText.SetFont(10, 13, fontColor);
// 索引14-17 (供测试) -> 大字号
richText.SetFont(14, 17, fontsize);
// 索引19 (使) -> 下标
richText.SetFont(19, 19, fontSubscript);
// 索引21 (用) -> 上标
richText.SetFont(21, 21, fontsuperscript);
// 剩余部分应用幼圆字体
richText.SetFont(22, richText.Text.Length, fontname);
// 可选:调整列宽以展示完整内容
sheet.Range["A1"].ColumnWidth = 50;
// 5. 保存生成的Excel文件
wb.SaveToFile("Result.xlsx", FileFormat.Version2013);
}
}
}
对应的 VB.NET 实现逻辑完全一致,主要语法差异在于变量声明方式与枚举调用:
Imports Spire.Xls
Namespace AddFormatsToTextInCell
Class Program
Private Shared Sub Main(args As String())
Dim wb As New Workbook()
Dim sheet As Worksheet = wb.Worksheets(0)
Dim fontname As ExcelFont = wb.CreateFont()
fontname.FontName = "幼圆"
Dim fontSubscript As ExcelFont = wb.CreateFont()
fontSubscript.IsSubscript = True
' ...(中间省略其他Font对象创建过程,逻辑同上) ...
Dim richText As RichText = sheet.Range("A1").RichText
richText.Text = "这段文字是测试文字,仅供测试时使用!C6B2幼圆体"
' 应用各种样式
richText.SetFont(0, 3, fontBold)
richText.SetFont(4, 6, fontItalic)
richText.SetFont(7, 9, fontUnderline)
richText.SetFont(10, 13, fontColor)
richText.SetFont(14, 17, fontsize)
richText.SetFont(19, 19, fontSubscript)
richText.SetFont(21, 21, fontsuperscript)
richText.SetFont(22, richText.Text.Length, fontname)
sheet.Range["A1"].ColumnWidth = 50
wb.SaveToFile("Result.xlsx", FileFormat.Version2013)
End Sub
End Class
End Namespace
结果验证
运行上述 C# 或 VB.NET 代码后,程序将在当前目录下生成名为 Result.xlsx 的文件。使用 Excel 打开该文件,查看 A1 单元格,您将看到字符串的不同部分呈现出各自设定的独立样式(如部分文字加粗、变色或带有下标/上标)。
以上就是详解C#实现在Excel单元格中应用多种字体格式的详细内容,更多关于C# Excel应用多种字体的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









