Python 3——xlsxwriter生成图表
1. xlsxwriter模块介绍
- xlsxwriter为Python第三方模块,用于向生成的Excel表格插入数据、图表等操作。
- 安装:pip install xlsxwriter
- 导入:import xlsxwriter
2. xlsxwriter的优缺点
- xlsxwriter较其他模块支持更多的Excel功能
- 100%兼容Excel xlsx文件,支持Excel 2003、Excel 2007等版本
- xlsxwriter处理速度更快,支持大文件写入
- 不支持修改Excel内容
3. xlsxwriter模块使用
3.1 写入文本、图片、超链接
import xlsxwriterwb = xlsxwriter.Workbook("data.xlsx")
# 创建sheet
sheet = wb.add_worksheet("newsheet")
# 写入
sheet.write(0, 0, "2021年度") # 写入单元格数据
sheet.merge_range(1, 0, 2, 2, "第一季度销售统计")
data = (["一月份", 500, 450],["二月份", 600, 550],["三月份", 650, 600]
)
sheet.write_row(3, 0, ["月份", "预期销售额", "实际销售额"])
# 写入数据
for index, item in enumerate(data):sheet.write_row(index+4, 0, item)
# 写入excel公式
sheet.write(7, 1, "=sum(B5:B7)")
sheet.write(7, 2, "=sum(C5:C7)")
sheet.write_url(9, 0, "http://www.baidu.com", string = "更多数据")
sheet.insert_image(10, 0, "4.jpg") # 插入图片
wb.close()
执行效果:
3.2 写入格式化配置
import xlsxwriterwb = xlsxwriter.Workbook("data.xlsx")
# 设置格式的两种方法 1.钩子函数
cell_format = wb.add_format({'bold' : True}) # 创建格式对象
cell_format1 = wb.add_format() # 格式对象
cell_format1.set_bold() # 设置加粗
cell_format1.set_font_color("red") # 设置文本字体颜色
cell_format1.set_font_size(14) # 设置字体大小
cell_format1.set_align("center") # 设置对齐方式 自动对齐
cell_format2 = wb.add_format() # 格式对象
cell_format2.set_bg_color("#808080") # 设置背景颜色# 创建sheet
sheet = wb.add_worksheet("newsheet")
# 写入
sheet.write(0, 0, "2021年度", cell_format) # 写入单元格数据
sheet.merge_range(1, 0, 2, 2, "第一季度销售统计", cell_format1)
data = (["一月份", 500, 450],["二月份", 600, 550],["三月份", 650, 600]
)
sheet.write_row(3, 0, ["月份", "预期销售额", "实际销售额"], cell_format2)
# 写入数据
for index, item in enumerate(data):sheet.write_row(index+4, 0, item)
# 写入excel公式
# write(self, row, col, *args)
sheet.write(7, 1, "=sum(B5:B7)")
sheet.write(7, 2, "=sum(C5:C7)")
# 插入超链接
sheet.write_url(9, 0, "http://www.baidu.com", string="更多数据")
sheet.insert_image(10, 0, "4.jpg") # 插入图片
wb.close()
执行效果:
3.3 写入图表到Excel
import xlsxwriterwb = xlsxwriter.Workbook("data.xlsx")
# 设置格式的两种方法 1.钩子函数
cell_format = wb.add_format({'bold' : True}) # 创建格式对象
cell_format1 = wb.add_format() # 格式对象
cell_format1.set_bold() # 设置加粗
cell_format1.set_font_color("red") # 设置文本字体颜色
cell_format1.set_font_size(14) # 设置字体大小
cell_format1.set_align("center") # 设置对齐方式 自动对齐
cell_format2 = wb.add_format() # 格式对象
cell_format2.set_bg_color("#808080") # 设置背景颜色# 创建sheet
sheet = wb.add_worksheet("newsheet")
# 写入
sheet.write(0, 0, "2021年度", cell_format) # 写入单元格数据
sheet.merge_range(1, 0, 2, 2, "第一季度销售统计", cell_format1)
data = (["一月份", 500, 450],["二月份", 600, 550],["三月份", 650, 600]
)
sheet.write_row(3, 0, ["月份", "预期销售额", "实际销售额"], cell_format2)
# 写入数据
for index, item in enumerate(data):sheet.write_row(index+4, 0, item)
# 写入excel公式
# write(self, row, col, *args)
sheet.write(7, 1, "=sum(B5:B7)")
sheet.write(7, 2, "=sum(C5:C7)")
# 插入超链接
sheet.write_url(9, 0, "http://www.baidu.com", string="更多数据")
sheet.insert_image(10, 0, "4.jpg") # 插入图片# 写入
chart = wb.add_chart({'type' : 'column'}) # column:柱状图,line:折线图
chart.set_title({'name':'第一季度销售统计'})
# X Y 描述信息
chart.set_x_axis({'name':'月份'})
chart.set_y_axis({'name':'销售额'})
# 数据
chart.add_series({'name' : '预期销售额','categories' : '=newsheet!$A$5:$A$7', # 通过单元格标识获取数据'values' : ['newsheet', 4, 1, 6, 1], # 通过索引获取'data_labels': {'value':True} # 显示数字
})
chart.add_series({'name' : '实际销售额','categories' : '=newsheet!$A$5:$A$7', # 通过单元格标识获取数据'values' : ['newsheet', 4, 2, 6, 2], # 通过索引获取'data_labels': {'value':True} # 显示数字
})
sheet.insert_chart('A19', chart)
wb.close()
执行效果:
4. 综合实战:某培训机构就业数据分析
4.1 实现步骤
- 步骤一:xlrd模块读取Excel数据
- 步骤二:xlsxwriter模块生成就业数据图表
- 步骤三:smtplib模块发送附件邮件
- smtlip模块对smtp协议进行了封装,提供更便捷的方式发送电子邮件
4.2 综合实战:某培训机构就业数据分析
import xlrd
import xlsxwriter
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication# 1.读取
data = xlrd.open_workbook('info.xls')
classInfo = []
for sheet in data.sheets():dict = {'name':sheet.name, 'avgsalary':0} # 班级信息sum = 0 # 存储薪资for i in range(sheet.nrows):# 从第3行开始才是有用的数据if i > 1:sum += float(sheet.cell(i, 5).value) # 得到薪资数据dict['avgsalary'] = sum / (sheet.nrows-2)classInfo.append(dict)
print(classInfo)# 2.写入exccel
workbook = xlsxwriter.Workbook('newInfo.xlsx')
sheet = workbook.add_worksheet() # 创建工作表
# 写入班级数据
nameInfo = []
salaryInfo = []
for item in classInfo:nameInfo.append(item['name'])salaryInfo.append(item['avgsalary'])
sheet.write_column('A1', nameInfo)
sheet.write_column('B1', salaryInfo)
# 写入图表
chart = workbook.add_chart({'type':'column'})
# 标题
chart.set_title({'name':'平均就业薪资'})
# 数据源
chart.add_series({'name':'班级','categories':'=Sheet1!$A$1:$A$3','values':'=Sheet1!$B$1:$B$3',
})
sheet.insert_chart('A7', chart)
workbook.close()# 3.发送邮件
host_server = 'smtp.163.com' # 主机地址
# 发件人邮箱
sender = "xxx@163.com"
# 发件人邮箱密码、授权码
code = "123456"
# 收件人
user1 = "xxx@qq.com"
# 准备邮件数据
# 邮件标题
mail_title = "!!!1月份平均就业薪资"
# 内容
mail_content = "1月份平均就业薪资,请具体查看附件"
# 构建附件
attachment = MIMEApplication(open('newInfo.xlsx', 'rb').read())
attachment.add_header('Content-Disposition', 'attachment', filename='data.xlsx')# SMTP
smtp = smtplib.SMTP(host_server)
# 登录
smtp.login(sender, code)
# 发送
msg = MIMEMultipart() # 带附件的实例
msg['Subject'] = mail_title
msg['From'] = sender
msg['To'] = user1
msg.attach(MIMEText(mail_content))
msg.attach(attachment)
smtp.sendmail(sender, user1, msg.as_string())
info.xls:
执行效果:
课程地址:
https://www.imooc.com/learn/1239
Python 3——xlsxwriter生成图表相关推荐
- 使用python 处理表格生成图表_教你用Python自动读取数据生成图表,产生的效益很可观...
厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...
- python 邮件中生成图表_60秒一口Python:147个demo,助你从新手小白步步进阶编程高手...
人生苦短,编程苦手,不妨学起Python,感受一飞冲天的快乐. 不要害怕学习的过程枯燥无味,这里有程序员jackzhenguo打造的一份中文Python"糖果包":147个代码小样 ...
- python xlsxwriter库生成图表的应用
xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外 还可以加上很形象的各种图,比如柱状图.饼图.折线图等. 请看本人生成的: 这 ...
- python根据excel生成报表_python生成Excel图表(通过xlsxwriter)
前面介绍了pandas的简单用法,pandas的数据可以通过matlab第三方包将数据生成报表,但是我想将报表生成在Excel中,这时候就可以借助xlsxwriter第三方包来生成图标 缺点:xlsx ...
- python 生成图表
python写入excel(xlswriter)--生成图表 折线图 # -*- coding:utf-8 -*-import xlsxwriter# 创建一个excel workbook = xls ...
- python写入excel表格数据绘制图表,Python对数据写入Execl文件并生成图表
Python对数据写入Execl文件并生成图表 需求: 为了做测试或者对爬虫程序爬取数据进行分析汇总,我们时常会将数据生成报表,但是如果我们想将报表生成在Excel中,这时候就可以借助xlsxwrit ...
- python读excel表格数据绘制图表_Python读取Excel数据生成图表 v2.0
原博文 2020-06-15 15:09 − ## Python读取Excel数据生成图表 v2.0 ## 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用 ...
- python批量生成图表_教你用Python自动读取数据生成图表,产生的效益很可观
厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...
- python绘制动态图表怎么存下来_用python如何实现导入excel数据后自动生成图表?python如何实现交互式动态图表?...
这个需求涉及的环节太多了.导入excel文件,获取数据 -- 需要xlrd模块把数据导入python 2. 设定输出图表类型 -- 需要matplot模块.根据数据复杂度,可能需要ETL,那么需要pa ...
- python生成折线图-python 生成图表
# -*- coding:utf-8 -*- import xlsxwriter # 创建一个excel workbook = xlsxwriter.Workbook("chart_pie. ...
最新文章
- 经典的导航二级式导航菜单增强版
- HBase scan setBatch和setCaching的区别
- 十大经典排序算法动画与解析,看我就够了
- mysql超详细教程_MySQL8.0.23安装超详细教程
- 平述factory reset	——从main system到重引导流程
- 如何在 SAP BTP 平台上重用另一个已经开发好的 service
- 9.23 基础知识
- 微软将取缔 8 亿 Windows 10 用户的密码!
- 在react开发过程中由于setState的异步特性,获取最新state遇到问题
- 《Java就业培训教程》_张孝祥_书内源码_08
- 升级JUnit5及其特性介绍
- AI带你走进P图新时代
- 【杂谈】从零开始组建团队开发一款APP的人力成本以及时间成本解析
- R语言 表达式对象的求值 eval
- 渠道、数据、技术,谁才是网络信贷市场的决胜因素?
- Nexus 搭建docker本地仓库(hosted)和私有仓库(proxy)
- matplotlib模拟重力场中粒子的分布
- 23、实时汇率API接口,免费好用
- Nginx反向代理服务器高速缓存数据结构的部分实现
- Appium APP UI自动化测试框架介绍