首页 > 其他分享 >openpyxl styles 模块

openpyxl styles 模块

时间:2024-05-21 08:56:46浏览次数:21  
标签:styles openpyxl 样式 单元格 边框 cell 模块 wb

styles 模块说明

styles 模块提供了许多用于设置和控制单元格样式的类和方法。这些类和方法可以帮助你定制 Excel 工作表中单元格的外观,包括字体样式、边框、填充颜色等。

styles 模块主要功能

Font(字体):Font 类用于定义和修改单元格中文本的字体样式,如字体名称、大小、颜色、粗体、斜体等。

PatternFill(填充颜色):PatternFill 类允许设置单元格的填充颜色和填充样式。

Border(边框):Border 类用于定义单元格的边框样式,包括边框粗细、颜色和线条样式。

Alignment(对齐):Alignment 类允许控制单元格中内容的对齐方式,包括水平对齐(左对齐、居中、右对齐)和垂直对齐。

NamedStyle(命名样式):NamedStyle 类用于创建自定义的命名样式,将多个单元格样式属性组合在一起。

styles 模块导入

from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border

Font

Font(): 通过 Font 类,可以控制字体的名称、大小、颜色、样式(粗体、斜体等)等属性,从而定制单元格中文本的外观。

Font() 参数:
  name="Calibri":设置字体为 Calibri。
  sz=11:设置字号为 11。
  family=2:指定字体族,2 代表无衬线字体。
  b=False:设置粗体为 False,即不启用粗体效果。
  i=False:设置斜体为 False,即不启用斜体效果。
  color=Color(theme=1):设置颜色为主题颜色,并选择第一个主题颜色。
  scheme="minor":指定该字体样式属于次要文本方案。
  charset=None:字符集。
  u=None:下划线样式。
  strike=None:删除线效果。
  strikethrough=None:是否有删除线。
  vertAlign=None:垂直对齐方式。
  outline=None:外框。
  shadow=None:阴影。
  condense=None:是否压缩。
  extend=None:延伸效果。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border

# 创建一个新的Excel工作簿
wb = Workbook()

# 获取第一个工作表
worksheet = wb.active

# 设置单元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30)  # 设置第一行第一列的值为 30

# 定义字体样式
font_style = Font(name='Arial',    # 字体名称
                  size=12,        # 字体大小
                  bold=True,      # 加粗
                  italic=False,   # 斜体
                  color='FF0000', # 字体颜色(红色)
                  underline='single') # 下划线样式(单线)

# 设置单元格的样式
cell_A1.font = font_style

# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")

# 关闭工作簿
wb.close()

PatternFill 

PatternFill(填充颜色):PatternFill 类允许设置单元格的填充颜色和填充样式。
PatternFill 参数:
  patternType=None:填充的图案类型。
  fgColor=Color():前景色,即填充的主要颜色。
  bgColor=Color():背景色,即填充的背景颜色。
  fill_type=None:填充类型,例如 'solid' 纯色填充。
  start_color=None:渐变填充的起始颜色。
  end_color=None:渐变填充的结束颜色。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color

# 创建一个新的Excel工作簿
wb = Workbook()

# 获取第一个工作表
worksheet = wb.active

# 设置单元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30)  # 设置第一行第一列的值为 30

# 定义填充样式
pattern_fill = PatternFill(patternType='solid', fgColor=Color(rgb="00FF00"))  # 这里使用绿色作为填充颜色

# 设置单元格的样式
cell_A1.fill = pattern_fill

# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")

# 关闭工作簿
wb.close()

Border

Border(边框):Border 类用于定义单元格的边框样式,包括边框粗细、颜色和线条样式。
Border 参数:
  left:左边框样式。
  right:右边框样式。
  top:顶部边框样式。
  bottom:底部边框样式。
  diagonal:对角线边框样式。
  diagonal_direction:对角线方向。
  vertical:垂直边框样式。
  horizontal:水平边框样式。
  diagonalUp:是否使用从左上到右下的对角线。
  diagonalDown:是否使用从左下到右上的对角线。
  outline:是否应用外框。
  start:起始边框样式。
  end:结束边框样式。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Side

# 创建一个新的Excel工作簿
wb = Workbook()

# 获取第一个工作表
worksheet = wb.active

# 设置单元格的值
cell_A1 = worksheet.cell(row=1, column=1, value=30)  # 设置第一行第一列的值为 30

# 创建边框样式
thin_border = Border(left=Side(style='thin'),
                     right=Side(style='thin'),
                     top=Side(style='thin'),
                     bottom=Side(style='thin'))

# # 应用边框样式到单元格范围
cell_A1.border = thin_border     # 设置单元格A1的边框样式

# 选定单元格范围B1:C3
cell_range = worksheet["B1:C3"]
for row in cell_range:
    for cell in row:
        cell.border = thin_border  # 设置单元格范围B1:C3的边框样式
        
# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")

# 关闭工作簿
wb.close()

Alignment

Alignment(对齐):Alignment 类允许控制单元格中内容的对齐方式,包括水平对齐(左对齐、居中、右对齐)和垂直对齐。
Alignment 参数:
  horizontal:文本在单元格内的水平对齐方式。
  vertical:文本在单元格内的垂直对齐方式。
  textRotation:文本旋转角度。
  wrapText:是否自动换行。
  shrinkToFit:是否缩小字体以适应。
  indent:文本缩进级别。
  relativeIndent:相对缩进级别。
  justifyLastLine:是否两端对齐最后一行文本。
  readingOrder:文本的读取顺序。
  text_rotation:文本旋转角度。
  wrap_text:是否自动换行。
  shrink_to_fit:是否缩小字体以适应。
  mergeCell:是否合并单元格内的文本。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Side

# 创建一个新的Excel工作簿
wb = Workbook()

# 获取第一个工作表
worksheet = wb.active

# 设置单元格的值
cell_A1 = worksheet.cell(row=1, column=1, value="This is a long text that will wrap")

# 创建一个 Alignment 对象
alignment = Alignment(horizontal='center',     # 水平居中
                      vertical='center',       # 垂直居中
                      textRotation=45,         # 文本旋转角度
                      wrapText=True,           # 自动换行
                      shrinkToFit=True,        # 缩小字体以适应
                      indent=2)                # 缩进两个字符

# 将对齐样式应用于单元格 A1
cell_A1.alignment = alignment

# 调整列宽和行高以适应自动换行
default_row_height = worksheet.row_dimensions[1].height
worksheet.row_dimensions[1].height = 30  # 设置行高
worksheet.column_dimensions['A'].width = 30  # 设置列宽

# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")

# 关闭工作簿
wb.close()

NamedStyle

NamedStyle(命名样式):NamedStyle 类用于创建自定义的命名样式,将多个单元格样式属性组合在一起。
NamedStyle 参数:
  name:命名样式的名称。 唯一的名称。
  font:字体样式,可以通过 openpyxl.styles.Font 类定义。
  fill:填充样式,可以通过 openpyxl.styles.PatternFill 类定义。
  border:边框样式,可以通过 openpyxl.styles.Border 类定义。
  alignment:对齐样式,可以通过 openpyxl.styles.Alignment 类定义。
  number_format:数字格式。
  protection:保护设置,可以通过 openpyxl.styles.Protection 类定义。
  builtinId:内置 ID。
  hidden:是否隐藏。
  xfId:扩展字段 ID
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, NamedStyle, Alignment, Border, Color, Protection

# 创建一个新的Excel工作簿
wb = Workbook()

# 获取第一个工作表
worksheet = wb.active

# 设置单元格的值
cell_A1 = worksheet.cell(row=1, column=1, value="This is a long text that will wrap")

# 创建一个 NamedStyle 对象
normal_style = NamedStyle(name="CustomStyle",
                          font=Font(),              # 字体样式
                          fill=PatternFill(),       # 填充样式
                          border=Border(),          # 边框样式
                          alignment=Alignment(),    # 对齐样式
                          number_format=None,       # 数字格式
                          protection=Protection(),  # 保护设置
                          builtinId=None,           # 内置样式 ID
                          hidden=False,
                          xfId=None)

# 将样式应用于单元格 A1
cell_A1.style = normal_style

# 保存工作簿到指定的文件名
wb.save("execl_test.xlsx")

# 关闭工作簿
wb.close()

参考文档

https://openpyxl.readthedocs.io/en/stable/styles.html#/ 

标签:styles,openpyxl,样式,单元格,边框,cell,模块,wb
From: https://www.cnblogs.com/wangguishe/p/18196270

相关文章

  • openpyxl Worksheet
    worksheet说明Worksheet代表一个Excel工作表。worksheet初始化fromopenpyxlimportWorkbook#创建一个新的Excel工作簿wb=Workbook()#获取第一个工作表worksheet=wb.active#保存工作簿到指定的文件名wb.save("execl_test.xlsx")#关闭工作簿wb.close(......
  • ESP8266串口WiFi模块 - WiFi杀手
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`ESP8266串口WiFi模块-WiFi杀手日期:2020-2-3阿珏折腾代码浏览:2635次评论:21条前段时间买了个ESP8266,准备拿来耍耍。实际吃灰数月,然后就拖到......
  • BOSHIDA 了解AC/DC电源模块的工作原理及性能
    BOSHIDA了解AC/DC电源模块的工作原理及性能AC/DC电源模块是将交流电转换为直流电的设备,广泛应用于各种电子设备中。它的工作原理及性能对于保证设备的正常运行至关重要。 首先,AC/DC电源模块的工作原理是基于电力电子的原理,利用半导体器件如整流器、滤波器和调整器等将交流电......
  • 什么是模块化,为什么要模块化
    1.模块化就是将复杂的系统或功能拆分成多个相对独立、功能单一的模块。2.优点:这样做可以简化开发、提高代码复用性、降低维护成本,并提升整个系统的可扩展性和可维护性。每个模块负责完成特定的功能,通过接口与其他模块进行交互,从而实现整个系统的功能。模块化是指解决一个复杂问......
  • 【Nginx】开启SSI模块支持include文件引入
    SSI是ServerSideInclude的首字母缩略词。包含有嵌入式服务器方包含命令的HTML文本。在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取、分析以及修改。在Nginx中,开启SSI支持非常简单,通过向nginx.conf中添加几行设置命令即可实现。将下面的3行代码添加到ngi......
  • 连表操作、子查询、pymysql 模块、sql注入问题(感觉已没有)
    【连表操作】1建表2createtabledep1(3idint,4namevarchar(20)5);6createtableemp1(7idintprimarykeyauto_increment,8namevarchar(20),9sexenum('male','female')notnulldefault'male&......
  • 百度 Apollo 自定义模块发布——使用 Python 语言(bazel 编译 Python 模块)_bazel-bin b
    CSDN搬家失败,手动导出markdown后再导入博客园BinaryvsComponent首先说明下,Apollo的核心概念是组件,通过组件可以实现资源的自动管理和调度。CyberRT中只能使用C++语言实现Component,Python版的API只能用来写传统的二进制可执行文件,参考官方文档中这两种方式的区别:B......
  • Java(7)-Maven抽取公共模块构建jar包
    前提假设:项目中有两个Moudle,分别是Moudle1和Moudle2,它们有些代码是相同的,比如相同的类和API,重复书写当然可以正常运行,但是我们可以用maven打包成jar包,其他Moudle直接引用即可。步骤1.新建一个Module-commonpox.xml中配置Module1和Moudle2同样使用的依赖:<dependencies......
  • 鸿蒙HarmonyOS实战-Stage模型(服务卡片的模块和创建)
    ......
  • vuejs3.0 从入门到精通——vite+vue3+ts 显示找不到模块“../views/HomeView.vue”或
    vite+vue3+ts显示找不到模块“../views/HomeView.vue”或其相应的类型声明。ts(2307)一、在根目录下的env.d.ts文件(没有就自己创建)二、在env.d.ts文件中添加以下代码declaremodule'*.vue'{importtype{DefineComponent}from'vue'constcomponent:DefineCo......