系列文章目录
编程小白的自学笔记十六(python办公自动化操作EXCEL表格)
编程小白的自学笔记十五(python办公自动化操作EXCEL表格)
编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹
编程小白的自学笔记十三(python办公自动化读写文件)
编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)
编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)
编程小白的自学笔记十(python爬虫入门二+实例代码详解)
编程小白的自学笔记九(python爬虫入门+代码详解)
目录
系列文章目录
文章目录
前言
一、条件选择后添加背景
二、插入柱状图
总结
前言
今天我们学习两个小案例,感觉还都是非常实用的:
- 小实战1:条件选择后添加背景
- 小实战2:生成柱状图
一、条件选择后添加背景
昨天我们已经完成了表格大部分操作,并且将数值大于50的复制到一个新表,现在我们来试试将数值大于50的行背景改为黄色,而文字设置一个随便什么颜色,先试试看,然后再详解代码,我们第一次写的代码是:
from openpyxl.styles import Font,PatternFill
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb.active
wb.copy_worksheet(ws)
ws.title='我是新的'
font = Font(name='黑体',size=30,bold=True,italic=True,color='000ff0')
fill = PatternFill(fill_type='solid',fgColor='ffff00')
rows = wb['我是新的'].rows
for row in rows:
if int(row[1].value)>75:
row[0].fill=fill
row[1].font=font
wb.save('大于50的表格.xlsx')
运行后,成功了
详解代码:
‘from openpyxl.styles import Font,PatternFill’,很好理解,导入字体库和填充库
‘wb.copy_worksheet(ws)’,这段代码是为了不破坏原有的表格,所以我重新复制了一份。
经实验,“color='000ff0'”是蓝色
这个实验还是有两个地方没有达到预期的效果;
一是没有将一行所有的单元格都填充,也没有将一行所有单元格的字体改变。这好办,是我们少写了,只需将代码增加两行。
二是我们仔细观察可以发现,我们复制出工作簿以后,修改的是原工作簿,我们想是修改复制后的工作表,重命名也是复制后的工作表,原表是一切不变,我把新建的工作表删掉,再把原表的名称修改回来,我们尝试修改代码:
rom openpyxl.styles import Font,PatternFill
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb.active
ws=wb.copy_worksheet(ws)
ws.title='我是新的'
font = Font(name='黑体',size=30,bold=True,italic=True,color='000ff0')
fill = PatternFill(fill_type='solid',fgColor='ffff00')
rows = wb['我是新的'].rows
for row in rows:
if int(row[1].value)>75:
row[0].fill=fill
row[1].fill = fill
row[0].font = font
row[1].font=font
wb.save('大于50的表格.xlsx')
运行成功后,实现了我们想要的结果。
二、插入柱状图
在EXCEL表格使用中,难免要将数据生成柱状图插入表格,因为图形会显的更加直观,而且我发现以前的office生成图标很简单,现在的wps要登录才行,是不是要会员就不清楚了,毕竟我登录都不想登录,我们先来看看生成柱状图代码:
from openpyxl.chart import BarChart,Reference
import openpyxl
wb=openpyxl.load_workbook('大于50的表格.xlsx')
ws=wb['我是新的']
chart=BarChart()
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2)
categories=Reference(ws,min_row=2,max_row=6,min_col=1)
chart.add_data(data,titles_from_data=True)
chart.set_categories(categories)
ws.add_chart(chart,'F6')
wb.save('大于50的表格.xlsx')
运行成功,我们来看运行结果
代码详解:
‘from openpyxl.chart import BarChart,Reference’是Python编程语言中导入openpyxl库中的BarChart和Reference类的语句。
BarChart是openpyxl库中的一个类,用于创建条形图。它可以接受一系列数据并将其绘制成条形图。
Reference是openpyxl库中的一个类,用于在Excel工作表中引用单元格或范围。它可以用于在图表中设置数据源。
chart=BarChart()是Python编程语言中创建一个BarChart对象的语句。
BarChart是openpyxl库中的一个类,用于创建条形图。它可以接受一系列数据并将其绘制成条形图。
在这个语句中,我们将BarChart类的实例赋值给变量chart,这样我们就可以使用这个实例来创建和修改条形图了。
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2) 是Python编程语言中创建一个Excel工作表中的数据引用的语句。
Reference是openpyxl库中的一个类,用于在Excel工作表中引用单元格或范围。它可以用于在图表中设置数据源。
在这个语句中,我们将一个Reference对象赋值给变量data。这个对象指定了要引用的数据的范围和位置。具体来说,它指定了要引用的工作表(在这里是ws),以及要引用的单元格的最小行号(1)、最大行号(6)、最小列号(1)和最大列号(2)。这意味着我们将引用第1到第6行、第1到第2列之间的所有单元格。
chart.add_data(data,titles_from_data=True) 是Python编程语言中在openpyxl库中创建一个BarChart对象时添加数据和标题的语句。
在这个语句中,我们将数据引用(data)和一个布尔值(True)作为参数传递给BarChart对象的add_data()方法。这个方法用于向图表中添加数据。
同时,我们还设置了一个名为titles_from_data的参数,它的值为True。这意味着我们希望从数据中自动提取标题并将其添加到图表中。如果我们没有显式地提供标题,那么这个参数将被忽略。
ws.add_chart(chart,'F6')
这表示表格插入的位置,这很好理解。
其实这个表格也没有达到我们想要的预期,在这个案例中,我们并不想每个序号生成两个柱状图,但是却是有一蓝一红两根柱子,试试看怎么去,一是我把序号内容改成文字,看看会怎么样.
没有报错,而且得到我们想要的样式。
二是我们将数值改成文字看看会怎么样
错误是没有报错,也生成了图形,只是没有柱子。
三是我们还是改代码,得到我们想要的结果,思来想去,只能把代码
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=1,max_col=2)
改为
data=Reference(worksheet=ws,min_row=1,max_row=6,min_col=2)
总结
1024