使用 C# 设置 Excel 单元格格式

在实际报表开发中,Excel 的可读性和美观性与数据本身同样重要。合理的单元格格式设置不仅能让数据一目了然,还能让报表显得更专业。通过使用 C#,开发者可以精确控制 Excel 文件的单元格样式,无需依赖 Microsoft Office。

本文演示如何在 同一个工作表中 设置 字体、背景颜色、行高列宽、边框和单元格合并,并说明每个操作的作用和适用场景,帮助你真正理解 Excel 格式化背后的逻辑。

本文使用的方法需要用到免费的 Free Spire.XLS for .NET,NuGet:Install-Package FreeSpire.XLS


1. 初始化工作簿和工作表

csharp 复制代码
using Spire.Xls;
using System.Drawing;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "销售报表";

操作说明 :创建一个新的工作簿并获取第一个工作表。所有后续格式操作都在这个工作表中进行,保证操作集中一致。Worksheet 类是 Spire.XLS 中处理单个工作表的核心类,提供访问行、列和单元格以及进行格式设置的功能。

注意设置完格式之后,使用Workbook.SaveToFile()保存Excel工作簿到文件。


2. 设置单元格字体

csharp 复制代码
CellRange title = sheet.Range["B2"];
title.Text = "年度销售报表";
title.Style.Font.FontName = "Arial";
title.Style.Font.Size = 16;
title.Style.Font.IsBold = true;
title.Style.Font.Color = Color.DarkBlue;
title.Style.HorizontalAlignment = HorizontalAlignType.Center;

使用说明

  • FontNameSize 控制字体类型和大小,让标题更加醒目。
  • IsBoldColor 用于突出标题信息,使报表层次分明。
  • HorizontalAlignment 将标题居中显示,使视觉效果更整齐。
  • 字体设置能够引导读者快速关注关键信息,是报表美观的重要部分。

3. 设置背景颜色

csharp 复制代码
CellRange header = sheet.Range["B4:D4"];
header.Text = "产品类别\t数量\t金额";
header.Style.Color = Color.LightGray;
header.Style.Font.IsBold = true;
header.Style.HorizontalAlignment = HorizontalAlignType.Center;

作用说明

  • 背景颜色主要用于区分表头和数据区,使报表层次清晰。
  • 灰色背景是常用的表头样式,同时加粗字体进一步增强可读性。
  • 使用背景颜色可以让读者更容易理解数据分组和重点内容。

4. 调整行高和列宽

csharp 复制代码
sheet.Rows[1].RowHeight = 30;      // 标题行高度
sheet.Rows[3].RowHeight = 25;      // 表头行高度
sheet.Columns[1].ColumnWidth = 20; // 产品类别列宽
sheet.Columns[2].ColumnWidth = 15; // 数量列宽
sheet.Columns[3].ColumnWidth = 15; // 金额列宽

使用场景

  • 行高和列宽影响数据展示完整性和表格整齐度。
  • 调整行高 (RowHeight) 和列宽 (ColumnWidth) 可以防止文字截断,同时让表格视觉上更平衡。
  • 对于长标题或数字密集的表格,这一步尤其重要。

5. 设置边框

csharp 复制代码
CellRange dataRange = sheet.Range["B4:D6"];
dataRange.Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
dataRange.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
dataRange.Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
dataRange.Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
dataRange.Style.Borders[BordersLineType.vertical].LineStyle = LineStyleType.Thin;
dataRange.Style.Borders[BordersLineType.horizontal].LineStyle = LineStyleType.Thin;

操作说明

  • 边框可以清晰区分数据单元格,使表格结构更明确。
  • Spire.XLS 提供多种边框类型和线条样式,可自由组合。
  • 使用细线 (Thin) 的边框在数据表格中最常见,不会破坏整体视觉效果。

6. 合并单元格

csharp 复制代码
sheet.Range["B2:D2"].Merge();  // 合并标题单元格
sheet.Range["B7:D7"].Merge();  // 合并备注单元格
sheet.Range["B7"].Text = "数据来源:公司内部系统";
sheet.Range["B7"].Style.HorizontalAlignment = HorizontalAlignType.Center;
sheet.Range["B7"].Style.Font.IsItalic = true;

使用说明

  • 合并单元格 (Merge()) 常用于跨列的标题或备注,让内容在视觉上更突出。
  • 合并后通常需要设置居中对齐,否则文字会显示在左上角。
  • 适当使用合并单元格可以让报表布局更整洁专业。

7. 效果展示(示例表格)

下面是经过上述格式设置后保存的Excel文件:

综合效果展示了字体、背景色、行高列宽、边框和合并单元格的应用。


8. 关键类、方法与属性总结

操作类型 关键类/属性 使用说明
字体 CellRange.Style.Font 设置字体类型、大小、颜色、加粗、斜体等,突出标题或重点数据
背景色 CellRange.Style.Color 区分表头和数据区,使报表层次清晰
行高 Worksheet.Rows[].RowHeight 调整行高度,保证内容显示完整
列宽 Worksheet.Columns[].ColumnWidth 调整列宽,防止文字截断,保持表格整齐
边框 CellRange.Style.Borders 清晰区分单元格,增强表格结构感
合并单元格 CellRange.Merge() 合并跨列标题或备注,改善布局
水平对齐 CellRange.Style.HorizontalAlignment 设置文本水平对齐,如居中或靠左
垂直对齐 CellRange.Style.VerticalAlignment 设置文本垂直对齐,如居中或靠上

更多C# Excel文件操作技巧,请前往Spire.XLS for .NET官方教程查看。

相关推荐
li35742 小时前
Spring Boot 中 StringRedisTemplate 与 RedisTemplate 的区别与使用陷阱(附 getBean 为何报错
java·spring boot·后端
正义的大古2 小时前
OpenLayers数据源集成 -- 章节八:天地图集成详解
开发语言·javascript·ecmascript·openlayers
华仔啊3 小时前
依赖注入用@Autowired、@Resource还是构造器?3分钟搞清Spring官方到底推荐谁
java·后端
zhangfeng11333 小时前
R geo 然后读取数据的时候 make.names(vnames, unique = TRUE): invalid multibyte string 9
开发语言·chrome·r语言·生物信息
Sally璐璐3 小时前
Go组合式继承:灵活替代方案
开发语言·后端·golang
zzzsde3 小时前
【c++】类和对象(4)
开发语言·c++
码熔burning3 小时前
从 new 到 GC:一个Java对象的内存分配之旅
java·开发语言·jvm
晨非辰3 小时前
#C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
c语言·开发语言·经验分享·笔记·其他·学习方法·visual studio
gou123412343 小时前
Go语言io.Copy深度解析:高效数据复制的终极指南
开发语言·golang·php