Python 设置 Excel 单元格边框与样式

文章来源声明: 原文作者:用户835629078051; 来源站点:掘金; 原文链接:https://juejin.cn/post/7688895674230784027; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

适合需要批量生成或定期更新 Excel 报表的开发者,尤其是想把边框、字体、样式统一脚本化的场景,是可直接套用的实用示例。

![2026, 02_39_11.png](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/42ab412a4b874217a999b7fbf33cdc6a~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3ODM1NjI5MDc4MDUx:q75.awebp?rk3s=f64ab15b&x-expires=1790838574&x-signature=eRyr%2BuaZe%2BvKqvBTHzOfeW3FPNU%3D)

报表不仅要数据准确,还要排版清晰。边框区分行列、字体样式突出重点、对齐方式让数字和文字各归其位——这些都是让 Excel 报表可读性提升的基本手段。当报表需要批量生成或定期更新时,用脚本统一设置格式比手动调整更可靠。

本文以 Spire.XLS for Python 为例,介绍如何给单元格区域设置边框、创建自定义样式并应用到整行整列、套用 Excel 内置样式,以及直接设置字体属性。

环境准备

安装 Spire.XLS 库:

pip install Spire.XLS

在脚本中引入模块:

<span>from</span> spire.xls <span>import</span> *
<span>from</span> spire.xls.common <span>import</span> *

给单元格区域设置边框

最常见的需求是给一个数据区域加上统一边框。取到 CellRange 后,通过 Borders 属性批量设置:

workbook = Workbook()
workbook.LoadFromFile(<span>"报表.xlsx"</span>)
sheet = workbook.Worksheets[<span>0</span>]

<span># 取从首行首列到末行末列的整个数据区域</span>
cr = sheet.Range[sheet.FirstRow, sheet.FirstColumn, sheet.LastRow, sheet.LastColumn]

<span># 统一设置边框线型和颜色</span>
cr.Borders.LineStyle = LineStyleType.Double
cr.Borders.Color = Color.get_CadetBlue()

<span># 关闭对角线边框</span>
cr.Borders[BordersLineType.DiagonalDown].LineStyle = LineStyleType.none
cr.Borders[BordersLineType.DiagonalUp].LineStyle = LineStyleType.none

workbook.SaveToFile(<span>"带边框.xlsx"</span>, ExcelVersion.Version2010)
workbook.Dispose()

2026-09-24_142341.png

Borders.LineStyle 和 Borders.Color 一次性作用于区域内的所有边框。对角线默认也会被设置,如果不需要,把 DiagonalDown 和 DiagonalUp 的 LineStyle 显式置为 LineStyleType.none 即可。LineStyleType 还包括 Thin、Medium、Dotted、Dashed 等常用线型。

创建自定义样式并应用到行或列

当多行或多列需要相同的格式时,逐个单元格设置会很冗长。可以先创建一个命名样式,再把它套用到整行或整列:

workbook = Workbook()
sheet = workbook.Worksheets[<span>0</span>]

<span># 创建一个命名样式</span>
style = workbook.Styles.Add(<span>"headerStyle"</span>)
style.VerticalAlignment = VerticalAlignType.Center
style.HorizontalAlignment = HorizontalAlignType.Center
style.Font.Color = Color.get_Blue()
style.ShrinkToFit = <span>True</span>

<span># 在样式里定义底部边框</span>
style.Borders[BordersLineType.EdgeBottom].Color = Color.get_OrangeRed()
style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Dotted

<span># 套用到第一列</span>
sheet.Columns[<span>0</span>].CellStyleName = style.Name
sheet.Columns[<span>0</span>].Text = <span>"Test"</span>

workbook.SaveToFile(<span>"列样式.xlsx"</span>, ExcelVersion.Version2010)
workbook.Dispose()

2026-09-24_142434.png

workbook.Styles.Add() 返回的样式对象支持字体、对齐、边框、填充等全套属性。定义好后通过 CellStyleName = style.Name 应用到 sheet.Columns[i] 或 sheet.Rows[i],一行代码即可统一整列或整行。把 sheet.Columns[0] 换成 sheet.Rows[1],同样的样式就能套到第二行。

套用 Excel 内置样式

Excel 自带一批内置样式(如 Title、Heading、Good、Bad 等),可以直接套用,省去手动配色:

workbook = Workbook()
workbook.LoadFromFile(<span>"报表.xlsx"</span>)
sheet = workbook.Worksheets[<span>0</span>]

<span># 把第一行套用 Title 样式</span>
sheet.Range[<span>"A1:J1"</span>].BuiltInStyle = BuiltInStyles.Title

workbook.SaveToFile(<span>"内置样式.xlsx"</span>, ExcelVersion.Version2010)
workbook.Dispose()

2026-09-24_142608.png

BuiltInStyles 枚举对应 Excel "开始"选项卡里"单元格样式"下拉中的那些预定义样式,适合需要与 Excel 原生外观保持一致的场景。

直接设置字体属性

如果只需要改某个区域的字体,不必创建样式对象,直接通过 Range.Style.Font 操作:

workbook = Workbook()
workbook.LoadFromFile(<span>"报表.xlsx"</span>)
sheet = workbook.Worksheets[<span>0</span>]

<span># 字体名称和字号</span>
sheet.Range[<span>"B1"</span>].Style.Font.FontName = <span>"Comic Sans MS"</span>
sheet.Range[<span>"B1"</span>].Style.Font.Size = <span>45</span>

<span># 加粗、斜体、下划线</span>
sheet.Range[<span>"B2:D2"</span>].Style.Font.IsBold = <span>True</span>
sheet.Range[<span>"B3:D7"</span>].Style.Font.IsItalic = <span>True</span>
sheet.Range[<span>"B3:B7"</span>].Style.Font.Underline = FontUnderlineType.Single

<span># 字体颜色和删除线</span>
sheet.Range[<span>"B1"</span>].Style.Font.Color = Color.get_CornflowerBlue()
sheet.Range[<span>"D3"</span>].Style.Font.IsStrikethrough = <span>True</span>

workbook.SaveToFile(<span>"字体样式.xlsx"</span>, ExcelVersion.Version2010)
workbook.Dispose()

2026-09-24_142653.png

Font 对象的属性包括 FontName、Size、IsBold、IsItalic、Underline、Color、IsStrikethrough 等,每个属性都可以独立设置。Underline 接受 FontUnderlineType 枚举(如 Single、Double、AccountingSingle)。

实用提示

  • Borders.LineStyle 作用于区域所有边框;如果只想设某一边,用 Borders[BordersLineType.EdgeBottom] 等单独指定。
  • 自定义样式定义一次可多处复用,比逐格设置效率高,也便于后续统一改版。
  • ShrinkToFit = True 让文本自动缩小以适应列宽,适合不确定内容长度的列。
  • Color.get_CadetBlue() 这类命名颜色方便记忆;也可以用 Color.FromArgb(r, g, b) 指定任意颜色。
  • 处理完调用 workbook.Dispose() 释放资源。

总结

本文介绍了用 Python 设置 Excel 单元格格式的几种方式:通过 Borders 给区域加边框、用 workbook.Styles.Add() 创建命名样式并套用到整行整列、用 BuiltInStyle 直接套用 Excel 内置样式、以及通过 Range.Style.Font 直接设置字体属性。把这些操作组合进报表生成脚本,可以让格式设置完全自动化。