当前位置: 代码网 > it编程>前端脚本>Python > Python自动化实现设置Excel单元格边框与样式

Python自动化实现设置Excel单元格边框与样式

2026年09月24日 Python 我要评论
报表不仅要数据准确,还要排版清晰。边框区分行列、字体样式突出重点、对齐方式让数字和文字各归其位——这些都是让 excel 报表可读性提升的基本手段。当报表需要批量生成或定期更新

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

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

环境准备

安装 spire.xls 库:

pip install spire.xls

在脚本中引入模块:

from spire.xls import *
from spire.xls.common import *

给单元格区域设置边框

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

workbook = workbook()
workbook.loadfromfile("报表.xlsx")
sheet = workbook.worksheets[0]

# 取从首行首列到末行末列的整个数据区域
cr = sheet.range[sheet.firstrow, sheet.firstcolumn, sheet.lastrow, sheet.lastcolumn]

# 统一设置边框线型和颜色
cr.borders.linestyle = linestyletype.double
cr.borders.color = color.get_cadetblue()

# 关闭对角线边框
cr.borders[borderslinetype.diagonaldown].linestyle = linestyletype.none
cr.borders[borderslinetype.diagonalup].linestyle = linestyletype.none

workbook.savetofile("带边框.xlsx", excelversion.version2010)
workbook.dispose()

borders.linestyleborders.color 一次性作用于区域内的所有边框。对角线默认也会被设置,如果不需要,把 diagonaldowndiagonaluplinestyle 显式置为 linestyletype.none 即可。linestyletype 还包括 thinmediumdotteddashed 等常用线型。

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

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

workbook = workbook()
sheet = workbook.worksheets[0]

# 创建一个命名样式
style = workbook.styles.add("headerstyle")
style.verticalalignment = verticalaligntype.center
style.horizontalalignment = horizontalaligntype.center
style.font.color = color.get_blue()
style.shrinktofit = true

# 在样式里定义底部边框
style.borders[borderslinetype.edgebottom].color = color.get_orangered()
style.borders[borderslinetype.edgebottom].linestyle = linestyletype.dotted

# 套用到第一列
sheet.columns[0].cellstylename = style.name
sheet.columns[0].text = "test"

workbook.savetofile("列样式.xlsx", excelversion.version2010)
workbook.dispose()

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("报表.xlsx")
sheet = workbook.worksheets[0]

# 把第一行套用 title 样式
sheet.range["a1:j1"].builtinstyle = builtinstyles.title

workbook.savetofile("内置样式.xlsx", excelversion.version2010)
workbook.dispose()

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

直接设置字体属性

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

workbook = workbook()
workbook.loadfromfile("报表.xlsx")
sheet = workbook.worksheets[0]

# 字体名称和字号
sheet.range["b1"].style.font.fontname = "comic sans ms"
sheet.range["b1"].style.font.size = 45

# 加粗、斜体、下划线
sheet.range["b2:d2"].style.font.isbold = true
sheet.range["b3:d7"].style.font.isitalic = true
sheet.range["b3:b7"].style.font.underline = fontunderlinetype.single

# 字体颜色和删除线
sheet.range["b1"].style.font.color = color.get_cornflowerblue()
sheet.range["d3"].style.font.isstrikethrough = true

workbook.savetofile("字体样式.xlsx", excelversion.version2010)
workbook.dispose()

font 对象的属性包括 fontnamesizeisboldisitalicunderlinecolorisstrikethrough 等,每个属性都可以独立设置。underline 接受 fontunderlinetype 枚举(如 singledoubleaccountingsingle)。

实用提示

  • 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 直接设置字体属性。把这些操作组合进报表生成脚本,可以让格式设置完全自动化。

以上就是python自动化实现设置excel单元格边框与样式的详细内容,更多关于python设置excel单元格边框与样式的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com