Python处理excel表格(二)
1.5 设置单元格的字体风格
python函数的openpyxl模块中有字体设置函数,可以通过 from openpyxl.styles import Font来引入
size为字体大小,italic为斜体,令其状态值为True可以启用斜体
最后保存该修改格式到一个新的excel文档
1.6 Font对象
关键字 | 类型 |
---|---|
name | 字体种类 |
size | 字体大小 |
italic | 斜体 |
bold | 加粗字体 |
(name数据类型为字符型,size数据类型为整数型,italic和bold为布尔型)
创建一个font对象,并将该对象所拥有的字体类型,字体格式等赋予一个变量,然后将该变量赋予单元格的style属性,即font
openpyxl 字体的默认值 Calibri,大小的默认值为11。
1.7 公式
公式以一个等号开始,可以计算其他单元格的值
openpyxl模块可以直接赋予单元格计算公式
1.8 调整行和列
在 Excel 中,调整行和列的大小非常容易,只要点击并拖动行的边缘,或列的头部。但如果你需要根据单元格的内容来设置行或列的大小,或者希望设置大量电子表格文件中的行列大小,利用 Python 程序来做就要快得多。 行和列也可以完全隐藏起来或者它们可以“冻结”,这样就总是可以显示在屏幕上,如果打印该电子表格,它们就出现在每一页上(这很适合做表头)。
1.8.1 设置行高和列宽
可以利用python函数很方便的设置excel文档的行高和列宽
通过返回dimensions对象.row_dimensions[].height传入整型参数,整型参数从1开始,1即代表第一行,并赋值行高
通过返回dimensions对象.rowcolumn_dimensions[].width传入字符型参数,参数从A开始,A即代表第一列,并赋值列宽
行高可以设置为介于0和409的整数或浮点值。此值表示点数,其中一点等于1/72英寸。默认行高为12.75。列宽度可以设置为0和255。此值表示可以在单元格中显示的默认字体大小(11点)的字符数。默认列宽度为8.43个字符。宽度为0或高度为0对用户隐藏。
1.8.2 拆分和合并单元格
利用merge_cells()方法可以很方便的进行单元格的合并
merge_cells(StartCoordinate:EndCoordinate)
利用unmerge_cells()方法可以进行合并单元格的拆分
1.8.3 冻结窗格
如果对于太大而不能一屏显示的电子表格,“冻结”顶部的几行或最左边的几列,是很有帮助的,可以帮助你来判断这行或这列所对应的数据类型,比如查看你的成绩排名。例如,冻结的列或行表头,就算用户滚动电子表格,也是始终可见的。 这称为“冻结窗格”。在 Openpyxl中,每个 Worksheet 对象都有一个 freeze_panes 属性,可以设置为一个 Cell 对象或一个单元格坐标的字符串。请注意,单元格上边的所有行和左边的所有列都会冻结,但单元格所在的行和列不会冻结。 要解冻所有的单元格,就将 freeze_panes 设置为 None 或’A1’
sheet.freeze_panes=‘A2’ | 冻结第一行 |
---|---|
sheet.freeze_panes=‘B1’ | 冻结第一列 |
sheet.freeze_panes=‘C2’ | 冻结第一行,第一列和第二列 |
sheet.freeze_panes=None | 什么也不冻结 |
sheet.freeze_panes=‘A1’ | 什么也不冻结 |
freeze_panes作为冻结窗格的函数可以有效的让某些行和列一直显示在屏幕上,无论你怎样翻滚页面
1.8.4 图表
python中的Openpyxl支持使用工作表单元格中的数据创建条形图、线图、散点图和饼图。要制作图表,需要执行以下操作:
(1)创建一个Reference对象从单元格的矩形选择中获取。
(2)创建一个Series对象通过传入Reference对象。
(3)创建一个Chart对象。
(4)附加Series对象的Chart对象。
(5)添加Chart对象的Worksheet对象,可选地指定图表左上角应该定位的单元格。
这个Reference对象需要一些解释。Reference对象通过调用openpyxl.chart.Reference()函数并传递三个参数:
(1)这个Worksheet对象,其中包含图表数据。
(2)一个由两个整数组成的元组,表示包含图表数据的矩形单元格的左上角单元格:元组中的第一个整数是行,第二个是列。请注意1是第一行,而不是0.
(3)一个由两个整数组成的元组,表示包含图表数据的矩形单元格的右下角单元格:元组中的第一个整数是行,第二个是列。
同理,可制作饼状图以及条形图openpyxl.chart.LineChart(), openpyxl.chart.ScatterChart() 散点图