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

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

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

敬请期待啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值