编程小白的自学笔记十七(python办公自动化操作EXCEL表格之作图)

系列文章目录

编程小白的自学笔记十六(python办公自动化操作EXCEL表格)

编程小白的自学笔记十五(python办公自动化操作EXCEL表格)

编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹

编程小白的自学笔记十三(python办公自动化读写文件)

编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)

编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)

编程小白的自学笔记十(python爬虫入门二+实例代码详解) 

编程小白的自学笔记九(python爬虫入门+代码详解) 


目录

系列文章目录

文章目录

前言

一、条件选择后添加背景

二、插入柱状图

总结


前言

今天我们学习两个小案例,感觉还都是非常实用的:

  1. 小实战1:条件选择后添加背景
  2. 小实战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

猜你喜欢

转载自blog.csdn.net/m0_49914128/article/details/133972205