之前两篇文章已经向大家讲解了如何利用python读取和写入数据,本次就向大家介绍一下如何使用openpyxl对excel文件进行设置,以及如何在excel文件中绘制图表。

设置字体

使用python对excel文件进行操作,可以对其设置不同的字体样式,强调突出某些特定行或列等等。利用openpyxl,写上短短几行代码,就可以自动定制和更改数百万行的数据的样式了。

首先,让我们导入openpyxl模块,并且导入模块中的Font和Style函数。下述代码将会展示,如何新建一个excel工作簿,并且将F6单元格的字体大小设置为32,字体为斜体。

>>> import openpyxl
>>> from openpyxl.styles import Font, Style
>>> mywb = openpyxl.Workbook()
>>> mysheet = mywb.get_sheet_by_name('Sheet')
>>> italic32Font = Font(size=32, italic=True)
>>> sobj = Style(font=italic24Font)
>>> mysheet['F6'].style = sobj
>>> mysheet['F6'] = 'Applying Styles!'
>>> mywb.save('Appliedstyle.xlsx')

在openpyxl模块中,每个单元格都有一个样式对象,这个样式对象用于存储在单元格的样式.style属性中。因此,我们需要创建一个样式对象,并将其指定给一个具体的单元格。

>>> sobj = Style(font=italic24Font)

很显然,Style()函数就是用来生成样式对象的,它需要将字体对象当作参数输入

>>> italic32Font = Font(size=32, italic=True)

字体对象有四个参数可供输入:

  • Name:输入一个字符串,引用字体名称,比如'Arial'
  • Size:输入一个代表字体大小的整数值
  • Bold:输入一个布尔值,True代表字体需要加粗
  • Italic:输入一个布尔值,True代表字体为斜体

在上面的代码当中,我们使用了Font()函数建立了一个字体对象并赋值给了italic32Font变量,然后将其作为参数输入给Style()函数。接下来我们来看一个更完整的例子,你可以选择跟着这个例子完整地操作一次。

>>> import openpyxl
>>> from openpyxl.styles import Font, Style
>>> mywb = openpyxl.Workbook()
>>> mysheet = mywb.get_sheet_by_name('Sheet')
>>> firstFontObj = Font(name='Arial', bold=True)
>>> firstStyleObj = Style(font=firstFontObj)
>>> mysheet['F6'].style = firstStyleObj
>>> mysheet['F6'] = 'Bold Arial'>>> secondFontObj = Font(size=32, italic=True)
>>> secondStyleObj = Style(font=secondFontObj)
>>> mysheet['D7'].style = secondStyleObj
>>> mysheet['D7'] = '32 pt Italic'>>> mywb.save('ApplicationofStyles.xlsx')

调整行高列宽

我们可以使用openpyxl设置行高和列宽,还可以将某行或某列隐藏。详见下面的代码示例

>>> import openpyxl
>>> mywb = openpyxl.Workbook()
>>> mysheet = mywb.active
>>> mysheet['F6'] = 'Tall row'
>>> mysheet['D7'] = 'Wide column'
>>> mysheet.row_dimensions[3].height = 65
>>> mysheet.column_dimensions['F'].width = 25
>>> mywb.save('Heightandwidth.xlsx')

从上述代码中不难看出,.row_dimensions方法和.column_dimensions方法是将选中需要调整的行和列作为参数输入,后面紧跟的.height.width属性是用来保存行高和列宽的值。excel工作表中默认的行高值为12.75'点',其中一个'点'代表1/72英寸。你可以在0-409的范围内设置想要的行高,类似的,也可以在0-255范围内设置列宽。

行高和列宽都可以设置为整数或小数,想要隐藏某行或某列的方法也非常简单,只需将该行或列的高和宽设置成0即可自动隐藏。

单元格合并与取消合并

我们还可以使用openpyxl合并和取消合并单元格。首先让我们尝试合并单元格的操作,具体的代码应该是这个样子的

>>> import openpyxl
>>>my wb = openpyxl.Workbook()
>>> mysheet = mywb.active
>>> mysheet.merge_cells('B2:D3')
>>> mysheet['A1'] = 'cells merged together.'
>>> mysheet.merge_cells('F6:F7')
>>> mysheet['G5'] = 'Two merged cells.'
>>> mywb.save('Mergingcells.xlsx')

仍然非常简单,只需调用.merge_cells方法,将两个单元格的地址作为参数输入即可。第一个输入的单元格地址应为左上角的单元格,第二个单元格应为右下角,那么中间的矩形区域即为合并区域。

那么重点来了,如果我们想对合并区域进行赋值,该如何操作呢?openpyxl规定,对合并区域的左上角单元格进行赋值,即.merge_cells方法中的第一个输入的单元格地址进行赋值即可。

现在让我们来尝试一下取消合并单元格,看下面的例子

>>> import openpyxl
>>> mywb = openpyxl.load_workbook('Mergingcells.xlsx')
>>> mysheet = mywb.active
>>> mysheet.unmerge_cells('B2:D3')
>>> mysheet.unmerge_cells('F6:F7')
>>> mywb.save('unmerged.xlsx')

可以看到,操作与合并单元格非常类似,调用.unmerge_cells方法,将合并区域左上角与右下角的单元格地址输入就可以取消合并了。

绘制Excel图表

openpyxl模块支持利用工作表中数据创建各种常用类型的图表,如柱状图、折线图、散点图和饼状图。使用openpyxl创建excel图表的步骤很简单,总结如下

  1. 在使用矩形框选取要作图的单元格前,必须保证对象已经创建
  2. 将选取的对象转化并创建成序列对象
  3. 创建一个图表对象
  4. 将步骤2中创建的序列对象附加到步骤3中创建的图表对象中
  5. 设置图表顶部、左侧的位置,以及图表的宽度和高度
  6. 将图表对象添加到工作表对象中

这样看起来有些抽象,让我们来看一个实际的例子帮助理解

>>> import openpyxl
>>> chartwb = openpyxl.Workbook()
>>> sheet = chartwb.get_active_sheet()
>>> for x in range(1, 10):sheet['A' + str(i)] = i>>> referenceobj = openpyxl.charts.Reference(sheet, (1, 1), (10, 1))
>>> serObj = openpyxl.charts.Series(referenceObj, title='Chart Series')
>>> chartObject = openpyxl.charts.BarChart()>>> chartObject.append(serObj)
>>> chartObject.drawing.top = 50
>>> chartObject.drawing.left = 100
>>> chartObject.drawing.width = 300
>>> chartObject.drawing.height = 200>>> sheet.add_chart(chartObject)
>>> chartwb.save('example.xlsx')

上面的例子给大家展示了如何绘制一个柱状图,当然用openpyxl来绘制折线图,散点图,饼状图也都是不在话下的。创建过程与上述例子也非常类似,使用Openpyxl.charts.LineChart()Openpyxl.charts.ScatterChart()Openpyxl.charts.PieChart()即可创建折线图,散点图,饼状图了。

所以,通过创建引用对象和openpyxl函数,我们可以使用python在excel文件中创建大多数类型的图表。当然,我们根本不需要打开excel软件。

插入与删除行和列

在2.5.0版本之后的openpyxl有了一个新的实用性很强的功能,那就是插入与删除行和列。这个功能可以让大家在使用python做excel文件的时候,不用事先将文件中的行列数都算好,而是可以根据数据的改变动态地自动修改excel文件的版面设计。

插入行和列的操作非常简单,展示如下:

>>> sheet.insert_rows(7)
>>> sheet.insert_cols(6)

这样就可以了!我们已经成功在第7行插入了一行,在第6列插入了1列。注意,插入的函数默认只插入一个新的行或列,并且在已经存在的行或列之前。

删除行和列的方法也很简单,就像这样:

>>> sheet.delete_cols(6,3)
>>> sheet.delete_rows(2)

这样就成功删除了F到H列和第2行。当使用删除函数时,向函数传递的第一个参数表示需要删除的首行或首列号,第二个参数表示需要连续删除的行或列数量,如果没有第二个参数,则默认只删除一行或一列。

那么至此,python帮你做excel——openpyxl基础教程已经结束了。相信这三篇教程的内容可以基本覆盖到日常的excel操作,已经可以帮你省下不少重复劳动的时间了。未来如果大家还有哪些常用的操作想要学习,可以写在留言区哦!!

下一篇文章,就会开启一个全新的系列教程了。

敬请期待啦!

c# npoi 2.5版本设置字体加粗_Python帮你做Excel——格式设置与画图相关推荐

  1. TextView里面设置字体加粗

    在TextView里设置字体加粗分为两种方法,一种是在代码中动态添加,一种是在xml中静态添加 动态添加分两种方法: 1. TextView textView = (TextView)findView ...

  2. qt designer stylesheet 设置字体加粗无效

    估计是qt designer的bug,qt designer stylesheet 设置字体加粗无效. 解决办法是在右侧的属性窗口对字体进行加粗设置,注意需要将stylesheet里面对字体的加粗设置 ...

  3. html加粗代码样式,css如何设置字体加粗样式?

    css可以通过font-weight属性来设置字体加粗.font-weight属性可用于设置文本的粗细,一般设置该属性的值为bold或bolder来加粗字体. css可以通过font-weight属性 ...

  4. html 字体自动加粗为啥,互联网常识:html怎么设置字体加粗

    html设置字体加粗的方法:首先新建一个HTML页面,并添加HTML结构:然后在body区域添加字体:最后在CSS中用font-weight进行加粗设置即可. 本文操作环境:windows7系统.HT ...

  5. pyqt怎么给字体加粗_微信拍一拍可设置后缀?怎么用?还有更多新功能!

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,如有侵权,请联系删除谢谢. 微 ...

  6. Android 设置字体加粗,斜体,中划线(删除线)下划线,上标,下标,文字表情等

    ForegroundColorSpan,为文本设置部分颜色 /*** 设置部分字体颜色*/ public void setTextColor(){SpannableString spannableSt ...

  7. latex设置字体加粗、斜体、下划线

    用latex写文章时,有时想改变字体的样式,这时应该怎么操作呢? 加粗 在字体前写上textbf: \textbf{加粗} 斜体 \emph{斜体} 下划线 \underline{下划线} 嵌套 % ...

  8. c# npoi 2.5版本设置字体加粗_巨巨巨巨推荐:SCI翻译神器,大版本更新来了

    原标题:巨巨巨巨推荐:SCI翻译神器,大版本更新来了 来源丨软件通 ← 推荐关注 软件简介 CopyTranslator是一款小通见人就推荐的翻译软件.内置谷歌翻译.有道.百度.搜狗等主流的翻译器,翻 ...

  9. Android --- 两种设置字体加粗的方法

    直接上代码 tv_subject_name.getPaint().setFakeBoldText(true); tv_subject_name.getPaint().setTypeface(Typef ...

最新文章

  1. three相机在模型上_基于 three.js 的 3D 粒子动效实现
  2. 突然关机导致git文件受损,如何处理
  3. python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...
  4. 【学习的心得】——“快餐”的效率与“挖掘”的重要性
  5. 极端懒惰:使用Spring Boot开发JAX-RS服务
  6. www万维网和HTTP协议
  7. centos双系统只有linux,Centos添加Windows/Centos双系统启动
  8. php通过使用curl获取http或者https的响应信息的方式
  9. Tomcat BIO . NIO . ARP 配置
  10. 【Tensorflow】Tensorflow中的卷积函数(conv2d、slim.conv2d、depthwise_conv2d、conv2d_transpose)
  11. Win7主题制作修改教程
  12. 王禹偁:万壑有声含晚籁,数峰无语立斜阳
  13. 如何利用 C# 爬取「财报说」中的股票数据?
  14. deeplearning.14深度学习猫咪识别阶段性检测记录
  15. 大数据时代背景下的商标注册风险及应对方法
  16. procdump 抓 dump文件
  17. 双击打开.bat文件闪退
  18. Linux编写简单的脚本
  19. 显卡的指标有哪些方面_纯干货!显卡购买重要参数:老司机勿入
  20. 【图像处理】常用色彩空间

热门文章

  1. 【C语言】创建一个函数,判断某一正整数是否为水仙花数,并调用这个函数找出1000以内所有水仙花数...
  2. C#开发笔记之20-如何用C#深克隆一个对象(优雅方案)?
  3. C#LeetCode刷题-脑筋急转弯
  4. 金融时间序列计算分析题1
  5. 图解高性能服务器开发两种模式,第四章 NETTY高性能架构设计
  6. IDEA的Struts2项目报错java.lang.ClassNotFoundException
  7. Python实现定时任务,定时采集数据,定时执行脚本程序都可以
  8. Python colormap库的安装和使用
  9. DFF(深度前馈网络)学习参考
  10. sklearn 常用模块及类与方法