之前两篇文章已经向大家讲解了如何利用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图表的步骤很简单,总结如下在使用矩形框选取要作图的单元格前,必须保证对象已经创建

将选取的对象转化并创建成序列对象

创建一个图表对象

将步骤2中创建的序列对象附加到步骤3中创建的图表对象中

设置图表顶部、左侧的位置,以及图表的宽度和高度

将图表对象添加到工作表对象中

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

>>> 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操作,已经可以帮你省下不少重复劳动的时间了。未来如果大家还有哪些常用的操作想要学习,可以写在留言区哦!!

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

敬请期待啦!

python设置excel单元格格式_Python帮你做Excel——格式设置与画图相关推荐

  1. c# npoi 2.5版本设置字体加粗_Python帮你做Excel——格式设置与画图

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

  2. python实现excel单元格合并_python进行excel单元格合并逆操作

    python进行excel单元格合并逆操作.利用anaconda3中的 pandas对包含合并单元格的表进行预处理,完成取消合并单元格的操作. 目标 通过处理表格A,得到表格B. 图1(通过处理表格A ...

  3. python无法读取excel文字_Python帮你做Excel——读取Excel文档

    相信很多坐在办公室上班的朋友每天都需要处理大量的数据,我们常常用Excel制作电子表格来帮助我们处理它们.这当然是一种非常好的做法,但是我相信大家都会发现,很多表格的内容其实大同小异,常常需要我们把同 ...

  4. excel单元格内加空格_怎样在excel的单元格中的一列数字间添加两空格?

    在职场EXCEL统计中,如果我们将一串数字全部输入到一个单元格,看的时候,就不是很直观,关于一些有逻辑规律的标准格式,比如电话号码,我们输入就遵循3-4-4的原则,中间添加一些空格,看起来就比较直观, ...

  5. Python 不改变Excel单元格样式—xls和xlsx两种格式

    因为xls和xlsx两种格式,xlsx是被加密了传统的方式读取修改不了 下面是xls格式读取修改 # -*- coding: utf-8 -*-# # ------------------------ ...

  6. python获取指定单元格内容_python读取excel表格指定位置的内容

    今天是第一次写博客,对之前学以致用的内容做一些总结,以备日后忘了或者可以给别人提供一些帮助.话不多说,开始写内容. python读取excel表格指定位置的内容 需求:现在有一个excel表格,里面有 ...

  7. python excel单元格坐标_python简单Excel操作

    以此为例: 1. workbook对象 wb = openpyxl.load_workbook(fileName) 属性: sheetsNames =wb.sheetnames 所有表的名字 shee ...

  8. java poi excel 单元格样式_java poi批量导出excel 设置单元格样式

    POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...

  9. python 读取合并单元格 视频_Python如何使用xlrd实现读取合并单元格

    合并单元格 操作方法: 1.使用xlrd自带属性:merged_cells # 获取表格中所有合并单元格位置,以列表形式返回 (起始行,结束行,起始列,结束列) merged = sheet.merg ...

  10. poi怎么设置某个单元格为下拉框_java excel 多选下拉列表设置

    方案二 方案二的思路是在excel中添加一个隐藏的sheet存放数据源(下拉的数据),在真正需要下拉的sheet单元格写入属性. 1.需要使用到的util类 package com.excel.sel ...

最新文章

  1. 从Google的PaaS平台说起,解析中美Docker生态圈
  2. 推荐!国外程序员整理的 C++ 资源大全(https://github.com/fffaraz/awesome-cpp)
  3. linux 下查看log实时输出
  4. RPA女子计划—面向日本女性的工作方式改革
  5. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
  6. C++:顺序表的基本操作(待完善)
  7. 几何基础之点在多边形内的判断
  8. nodejs项目npm start背后的工作原理
  9. 如何在html文件中包含其他html文件
  10. shell mysql awk_shell mysql 处理数据小结
  11. 搭建windows的solr6服务器
  12. linux 网络对讲,基于ARM与Linux的全数字化可视对讲系统的设计与实现
  13. .NET-C#超文本编辑器FreeTextBox使用
  14. C++实现H264文件解析
  15. 高频电子线路张肃文第五版详解_高频电子线路第五版张肃文主编学习课件(上).ppt...
  16. JAVA之MySQL数据库增删改查【Java入门练手】
  17. 汽车行业如何玩转“Web3.0”?智己汽车“原石谷”开启区块链应用新场景!
  18. 关于CISC和RISC的一些总结
  19. 日期函数DATEDIFF() 计算日期之差
  20. 金士顿服务器内存条怎么看型号,Win10怎么查看内存条型号?

热门文章

  1. android软路由,软路由体验 篇一:  100块钱还要啥自行车,软路由初体验
  2. MBP TouchBar自定义使用
  3. QT中的explicit关键字的意思
  4. vue 实现点击插入输入框_vue把输入框的内容添加到页面的实例讲解
  5. 【牛客网】 BM69 把数字翻译成字符串(动态规划C++题解)
  6. 搭建好的飞飞服务器(虚拟机)+客户端(物理机)分享给大家
  7. 数据结构-哈夫曼树详解(类C语言版)
  8. 看牙分期软件3.10版本更新及功能介绍
  9. 偏微分方程1-常微分方程求解方法回顾
  10. RT-Thread学习笔记【网络设备与BSD套接字组件】