总第136篇/张俊红

1.前言

我们知道Excel功能很强大,Python与Excel交互也有很多现成的模块可以用,主要有xlrdxlwtopenpyxlxlsxwriter这四种可以用,这些模块可以很好地通过Python实现Excel的功能,但是这些模块有一个不太方便的地方就是针对每一个单元格的行列位置去操作的,每次使用都很麻烦,不像DataFrame那样可以针对行列去进行操作。DataFrame虽然操作便利,但是DataFrame又有个不如意的地方就是不能针对表去进行设置格式(字体颜色、大小之类的),所以有的时候为了可以设置表的格式还是需要用那几个比较麻烦的 Excel模块。直到我遇到了StyleFrame模块,这个模块是把Pandasopenpyxl进行了结合,让你既可以享受DataFrame的操作便利,又可以轻松利用openpyxl进行表格样式设置。

接下来我们就看一看如何针对DataFrame表进行样式设置。要看怎么设置,我们得先看看可以设置什么。延续『对比Excel』特点,我们还是同样看看Excel中有哪些格式可以设置。

Excel中我们平常设置的主要有字体(类型、颜色、边框线、背景色、下划线、大小、加粗)、对齐方式(水平方向、垂直方向)、数字(数据显示格式,百分数、小数点位数、时间格式等设置)、条件格式四个部分。

2.准备工作

因为StyleFrame这个模块不是Anaconda自带的,所以需要我们手动进行安装。直接进行如下命令即可进行安装:

pip install StyleFrame

你也可以选择其他安装方式,关于包的安装方式可以看这篇:讲几种Python包的安装方式

如果你是python3.7,那么你直接运行上述命令可能会报错,因为pip默认安装的是该模块的最新版本(目前最新是2.0.2),但是最新版本可能不太兼容,这个时候你可以安装1.6.2版本(2.0版本尝试了也安装失败)的,我就是用的1.6.2版本安装成功的。安装命令如下:

pip install StyleFrame==1.6.2

安装好以后,我们需要新建一个StyleFrame供接下来使用,新建StyleFrame使用的方法与新建DataFrame用的一样。

from StyleFrame import StyleFrame, Styler, utilssf = StyleFrame({"col_1": ["一","二","三"],"col_2":["Excel","Sql","Python"]})

需要注意的是这里的sf不同于DataFrame表的df,是不可以预览的。

3.设置样式对象

我们主要通过对下面的Styler进行样式设置。

Styler(bg_color=None, bold=False, font=utils.fonts.arial, font_size=12, font_color=None,number_format=utils.number_formats.general, protection=False, underline=None,border_type=utils.borders.thin, horizontal_alignment=utils.horizontal_alignments.center,vertical_alignment=utils.vertical_alignments.center, wrap_text=True, shrink_to_fit=True,fill_pattern_type=utils.fill_pattern_types.solid, indent=0, comment_author=None, comment_text=None)

以下为Styler对象的参数说明:

参数 说明
bg_color 单元格背景色
bold 字体加粗与否设置
font 字体类型
font_size 字体大小
font_color 字体颜色
number_format 数值格式
protection 保护表格不被修改
underline 下划线设置
border_type 边框线设置
horizontal_alignment 水平方向对齐设置
vertical_alignment 垂直方向对齐设置
wrap_text 是否自动换行
shrink_to_fit 是否根据字符长度缩小以适应单元格
fill_pattern_type 背景填充模式
indent 缩进距离
comment_author 批注作者
comment_text 批注内容

4.使用样式

设置完样式以后,我们就需要来指定在哪一行或哪一列上使用这个样式。

4.1在列上使用

在某一列上使用样式时需要用到如下方法:

apply_column_style(cols_to_style,styler_obj,style_header)

参数说明如下:

参数 说明
cols_to_style 要设置样式的列名
styler_obj 样式对象,即上面设置过的Styler
style_header 是否将表头也设置样式

4.2在行上使用

我们除了在某一列上设置样式外,我们有的时候要需要针对某些行进行样式设置,用到的方法如下:

apply_style_by_indexes(indexes_to_style,styler_obj,cols_to_style)

参数说明如下:

参数 说明
indexes_to_style 要设置样式的行,sf[sf['col1'] = 20]表示设置col1列等于20的行
styler_obj 样式对象
cols_to_style 要设置通过indexes_to_style选出那些行对应的哪些列

5.字体设置

这一篇我们主要讲讲字体相关的设置,其他设置留在下一篇再讲。

5.1字体类型

第一个是关于字体类型的设置,也就是什么字体,关于字体类型设置使用的是font参数,主要有如下几种参数值(字体)可选:

aegean = 'Aegean'
aegyptus = 'Aegyptus'
aharoni = 'Aharoni CLM'
anaktoria = 'Anaktoria'
analecta = 'Analecta'
anatolian = 'Anatolian'
arial = 'Arial'
calibri = 'Calibri'
david = 'David CLM'
dejavu_sans = 'DejaVu Sans'
ellinia = 'Ellinia CLM'

字体类型中用的最多的就是arial,即微软雅黑。当我们把字体样式设置成Arial样式,实现代码如下:

#将col_1和col_2列的字体设置成微软雅黑
sf.apply_column_style(cols_to_style=["col_1","col_2"], styler_obj=Styler(font='Arial'),style_header=True)
ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

我们用Excel打开设置样式后的文件,在字体类型那一栏就会显示Arial

5.2颜色

第二个是关于字体颜色的设置,关于字体颜色设置使用的是font_color参数,主要有如下几种参数值(颜色)可选:

white = op_colors.WHITE #白色
blue = op_colors.BLUE #蓝色
dark_blue = op_colors.DARKBLUE #深蓝色
yellow = op_colors.YELLOW #黄色
dark_yellow = op_colors.DARKYELLOW #深黄色
green = op_colors.GREEN #绿色
dark_green = op_colors.DARKGREEN #深绿色
black = op_colors.BLACK #黑色
red = op_colors.RED #红色
dark_red = op_colors.DARKRED #深红色
purple = '800080' #紫色
grey = 'D3D3D3' #灰色

我们把col_1列的字体设置成绿色,col_2列字体设置成红色,实现代码如下:

sf.apply_column_style(cols_to_style=["col_1"], styler_obj=Styler(font_color='green'),style_header=True)sf.apply_column_style(cols_to_style=['col_2'], styler_obj=Styler(font_color='red'),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.3边框线

第三个是关于单元格边框线设置的,关于边框线的设置使用的border_type参数,主要有如下几种参数值(边框线类型)可选:

dash_dot = 'dashDot' #点划线
dash_dot_dot = 'dashDotDot' #双点划线
dashed = 'dashed' #虚线
dotted = 'dotted' #点线
double = 'double' #双线
hair = 'hair' #丝线
medium = 'medium'
medium_dash_dot = 'mediumDashDot' #中等点划线
medium_dash_dot_dot = 'mediumDashDotDot' #中等双点划线
medium_dashed = 'mediumDashed' #中等虚线
slant_dash_dot = 'slantDashDot' #斜划线
thick = 'thick' #粗线
thin = 'thin' #细线

这里的边框线其实也是一种线,那既然是线的设置,就和我们之前学过的折线图里面线的设置大同小异了,大家可以根据自己的需求选择合适的线形。

我们把边框线设置成点划线,实现代码如下:

sf.apply_column_style(cols_to_style=["col_1","col_2"], styler_obj=Styler(border_type='dashDot'),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.4背景色

第四个是关于背景色的设计,即单元格填充颜色,关于单元格背景颜色使用的是bg_color参数,单元格背景的可选颜色和字体颜色一致,这里不再赘述。

我们把col_1列的单元格背景设置成绿色,col_2列单元格背景设置成红色,实现代码如下:

sf.apply_column_style(cols_to_style=["col_1"], styler_obj=Styler(bg_color='green'),style_header=True)sf.apply_column_style(cols_to_style=['col_2'], styler_obj=Styler(bg_color='red'),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.5下划线

第五个是关于下划线设置,给字加下划线,关于下划线的设置使用的是underline参数,主要有如下几种参数值(下划线类型)可选:

single = 'single' #单下划线
double = 'double' #双下划线

我们把整表全部加单下划线,实现代码如下:

sf.apply_column_style(cols_to_style=["col_1","col_2"], styler_obj=Styler(underline='single'),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.6字体大小

第六是字体大小的设置,字体大小的设置就比较简单了,直接给参数font_size指明一个具体数字就行。如下,我们将第一列设置成20号字体,将第二列设置成12号字体。实现代码如下:

sf.apply_column_style(cols_to_style=["col_1"], styler_obj=Styler(font_size=20),style_header=True)sf.apply_column_style(cols_to_style=["col_2"], styler_obj=Styler(font_size=12),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

5.7字体加粗

第七个是字体是否加粗的设置,关于字体是否加粗使用的是bold参数,如果要让字体加粗,另bold=True,否则不设置即可。

我们将第儿列字体进行加粗,第一列不进行设置,实现代码如下:

sf.apply_column_style(cols_to_style=["col_2"], styler_obj=Styler(bold=True),style_header=True)ew = StyleFrame.ExcelWriter(r'my_excel.xlsx')
sf.to_excel(ew)
ew.save()

最后效果如下:

关于字体相关的设置,我们就讲到这里,下一篇开始讲一些其他方面的设置,敬请期待。

DataFrame表样式设置(一)相关推荐

  1. DataFrame表样式设置(二)

    总第138篇/张俊红 在DataFrame样式表设置的第一节DataFrame表样式设置(一)中我们讲了字体相关的一些设置,这一节我们讲一下,对齐方式.数字显示.条件格式相关的一些设置. 1.对齐方式 ...

  2. POI封装工具easyexcel导出EXCEL表样式设置

    POI封装工具easyexcel导出EXCEL表样式设置 java中对Office操作比较好的工具是POI,但POI在导出数据量较大的情况下很容易因内存占用过大,而出错,阿里巴巴推出的easyexce ...

  3. 数据透视表可以两列汇总列吗_列出所有数据透视表样式宏

    数据透视表可以两列汇总列吗 When you create a pivot table, a default PivotTable Style is automatically applied. Yo ...

  4. 点击展开 表格_Excel里面如何设置默认的表格和透视表样式

    今天来介绍一下关于表格和透视表默认样式的小细节.在新建了一个表格或数据透视表以后,单元格区域就会显示出特定的格式,以方便对其他区域进行区分,并且也可以更好地查看和分析数据.另外,选中表格或透视表任意位 ...

  5. HTML+CSS---定位(相对定位--绝对定位--固定定位--设置元素的层叠顺序)---表单---设置光标样式---透明度(opacity属性定义元素的不透明度--IE的半透明滤镜)---外边线

    文章目录 定位 静态定位(static) 相对定位(relative) 绝对定位(absolute) 固定定位(fixed) 设置元素的层叠顺序 表单 设置光标样式 透明度 opacity属性定义元素 ...

  6. Pandas 表格样式设置指南,看这一篇就够了!

    源自/Python数据之道 最近这些年,Python在数据分析以及人工智能领域是越来越火. 这离不开pandas.numpy.sklearn.TensorFlow.PyTorch等数据科学包,尤其是 ...

  7. 【Python】Pandas 表格样式设置指南,看这一篇就够了!

    Pandas 表格样式设置指南 来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 最近这些年,Python在数据分析以及人工智能领域是越来越火. 这离不开pandas.numpy. ...

  8. Javascript操作table,tr,td和表格CSS样式设置小常识

    效果良好的表属性设置: <table cellSpacing="0" cellPadding="0" border='1' bordercolor=&qu ...

  9. SVG基本形状及样式设置

    前面的话 图形分为位图和矢量图.位图是基于颜色的描述,是由像素点组成的图像:而矢量图是基于数学矢量的描述,是由几何图元组成的图像,与分辨率无关.可缩放矢量图形,即SVG,是W3C XML的分支语言之一 ...

最新文章

  1. 关于敏捷开发的最佳实践和工具
  2. 最新BERT相关论文汇总
  3. 简单实用的Windows命令(一)
  4. 阿里集团搜索和推荐关于效率稳定性的思考和实践
  5. arcgis几何修复有作用吗_ArcGis拓扑的那些事儿(拓扑应用过程二)
  6. 为什么我们要做单元测试?(二)
  7. easyUI之Messager(消息窗口)
  8. php原生数据库分页
  9. js对象转json字符串
  10. mysql建考勤信息代码_基于Java+JSP+Servlet+Mysql的考勤管理系统
  11. python绘制折线图显示点数据_Python_散点图与折线图绘制
  12. 阿姆斯特朗数——————还记得大明湖畔的水仙花么(笑)
  13. Windows使用Hashcat
  14. 七十二烷基三硅醇poss|七十二烷基三硅醇笼形聚倍半硅氧烷
  15. iOS 並行編程初步
  16. Linux下自动重启系统
  17. 【网安神器篇】——mimikatz系统取证工具
  18. .net中,日志组件 Nlog,SerialLog, Log4Net的用法
  19. 基于ANSYS 2019R1全解一款双吸泵的双向流固耦合方法
  20. asp.net程序编程模式

热门文章

  1. SpringMVC与Mybatis整合---SpringMVC学习笔记(六)
  2. npm包的上传npm包的步骤,与更新和下载步骤
  3. 解决Nginx+Tomcat下客户端https请求跳转成http的问题
  4. 网络分流器-网络分流器-网络安全评估探讨
  5. C# asp:Repeater DataSource ListT
  6. Wang Xifeng's Little Plot (poj 5024 DFS)
  7. Unit Testing in iOS
  8. 如何下载今日头条视频
  9. UA池和IP代理池使用
  10. ie9 background 不显示