查看: 285|回复: 0

Python Spire.XLS批量设置Excel边框与单元格样式

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
在批量生成或定期更新 Excel 报表时,数据准确之外,格式统一也会直接影响可读性。边框用于区分行列,字体样式用于突出重点,对齐方式让数字和文字各归其位。当这些格式需要反复设置时,用 Python 脚本统一处理比手工调整更可靠。本文以 Spire.XLS for Python 为例,整理设置单元格区域边框、创建自定义样式并套用到行列、套用 Excel 内置样式、直接设置字体属性的实现方式。

环境准备

安装 Spire.XLS 库:
  1. pip install Spire.XLS
复制代码

脚本中引入模块:
  1. from spire.xls import *
  2. from spire.xls.common import *
复制代码

一、给单元格区域设置边框

最常见的需求是给一个数据区域加统一边框。取到 CellRange 后,通过 Borders 属性批量设置:
  1. workbook = Workbook()
  2. workbook.LoadFromFile('报表.xlsx')
  3. sheet = workbook.Worksheets[0]
  4. # 取从首行首列到末行末列的整个数据区域
  5. cr = sheet.Range[sheet.FirstRow, sheet.FirstColumn, sheet.LastRow, sheet.LastColumn]
  6. # 统一设置边框线型和颜色
  7. cr.Borders.LineStyle = LineStyleType.Double
  8. cr.Borders.Color = Color.get_CadetBlue()
  9. # 关闭对角线边框
  10. cr.Borders[BordersLineType.DiagonalDown].LineStyle = LineStyleType.none
  11. cr.Borders[BordersLineType.DiagonalUp].LineStyle = LineStyleType.none
  12. workbook.SaveToFile('带边框.xlsx', ExcelVersion.Version2010)
  13. workbook.Dispose()
复制代码

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

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

当多行或多列需要相同格式时,逐个单元格设置会比较冗长。可以先创建一个命名样式,再把它套用到整行或整列:
  1. workbook = Workbook()
  2. sheet = workbook.Worksheets[0]
  3. # 创建一个命名样式
  4. style = workbook.Styles.Add('headerStyle')
  5. style.VerticalAlignment = VerticalAlignType.Center
  6. style.HorizontalAlignment = HorizontalAlignType.Center
  7. style.Font.Color = Color.get_Blue()
  8. style.ShrinkToFit = True
  9. # 在样式里定义底部边框
  10. style.Borders[BordersLineType.EdgeBottom].Color = Color.get_OrangeRed()
  11. style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Dotted
  12. # 套用到第一列
  13. sheet.Columns[0].CellStyleName = style.Name
  14. sheet.Columns[0].Text = 'Test'
  15. workbook.SaveToFile('列样式.xlsx', ExcelVersion.Version2010)
  16. workbook.Dispose()
复制代码

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

三、套用 Excel 内置样式

Excel 自带一批内置样式,例如 Title、Heading、Good、Bad 等,可以直接套用,省去手动配色:
  1. workbook = Workbook()
  2. workbook.LoadFromFile('报表.xlsx')
  3. sheet = workbook.Worksheets[0]
  4. # 把第一行套用 Title 样式
  5. sheet.Range['A1:J1'].BuiltInStyle = BuiltInStyles.Title
  6. workbook.SaveToFile('内置样式.xlsx', ExcelVersion.Version2010)
  7. workbook.Dispose()
复制代码

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

四、直接设置字体属性

如果只需要改某个区域的字体,不必创建样式对象,可以直接通过 Range.Style.Font 操作:
  1. workbook = Workbook()
  2. workbook.LoadFromFile('报表.xlsx')
  3. sheet = workbook.Worksheets[0]
  4. # 字体名称和字号
  5. sheet.Range['B1'].Style.Font.FontName = 'Comic Sans MS'
  6. sheet.Range['B1'].Style.Font.Size = 45
  7. # 加粗、斜体、下划线
  8. sheet.Range['B2:D2'].Style.Font.IsBold = True
  9. sheet.Range['B3:D7'].Style.Font.IsItalic = True
  10. sheet.Range['B3:B7'].Style.Font.Underline = FontUnderlineType.Single
  11. # 字体颜色和删除线
  12. sheet.Range['B1'].Style.Font.Color = Color.get_CornflowerBlue()
  13. sheet.Range['D3'].Style.Font.IsStrikethrough = True
  14. workbook.SaveToFile('字体样式.xlsx', ExcelVersion.Version2010)
  15. workbook.Dispose()
复制代码

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() 释放资源。

总结

围绕 Spire.XLS for Python,可以用 Borders 给区域加边框,用 workbook.Styles.Add() 创建命名样式并套用到整行整列,用 BuiltInStyle 直接套用 Excel 内置样式,以及通过 Range.Style.Font 直接设置字体属性。把这些操作组合进报表生成脚本,可以让格式设置完全自动化。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-25 12:48 , Processed in 0.020808 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部