python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
# coding=utf-8
from openpyxl import load_workbook
from openpyxl.chart import (
AreaChart,
Reference
)
import MySQLdb class GaokaoExport(object):
def __init__(self): self.wb = load_workbook('./static/tongji_example.xlsx')
self.ws = self.wb.active
self.ws.title = '成绩统计'
self.ws.sheet_properties.tabColor = 'ff0000' def get_conn(self):
""" 获取mysql 的链接"""
global conn
try:
conn = MySQLdb.connect(
db = 'user_grade',
host = 'localhost',
user = 'root',
password = 'root',
charset = 'utf8'
)
except:
pass
return conn def export_data(self):
# 取出数据库中的数据
conn = self.get_conn()
cur = conn.cursor()
sql = "select year,max,avg from score"
cur.execute(sql)
rows = cur.fetchall() # 循环写入到excel中
row_id = 10 # excel的第10行开始
for (i, row) in enumerate(rows):
(self.ws['C{0}'.format(row_id)],
self.ws['D{0}'.format(row_id)],
self.ws['E{0}'.format(row_id)]) = row
row_id += 1 # 显示图表
# 参考:https://openpyxl.readthedocs.io/en/stable/charts/area.html#d-area-charts
chart = AreaChart()
chart.title = "成绩统计"
chart.style = 13
chart.x_axis.title = '年份'
chart.y_axis.title = '分数' # 横坐标
cats = Reference(self.ws, min_col=3, min_row=10, max_row=row_id)
# 数据区域
data = Reference(self.ws, min_col=4, min_row=9, max_col=5, max_row=row_id)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats) self.ws.add_chart(chart, "A{0}".format(row_id + 2)) # 保存到excel中
self.wb.save('./static/jieguo01.xlsx')
self.wb.close() if __name__ == "__main__":
client = GaokaoExport()
client.export_data()
mysql表数据:
create database user_grade charset=utf8mb4;
use user_grade;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`year` int(11) NULL DEFAULT NULL,
`max` int(11) NULL DEFAULT NULL,
`avg` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
INSERT INTO `score` VALUES (25, 2008, 700, 661);
INSERT INTO `score` VALUES (26, 2009, 690, 653);
INSERT INTO `score` VALUES (27, 2010, 699, 663);
INSERT INTO `score` VALUES (28, 2011, 690, 662);
INSERT INTO `score` VALUES (29, 2012, 702, 660);
INSERT INTO `score` VALUES (30, 2013, 720, 692);
INSERT INTO `score` VALUES (31, 2014, 719, 670);
INSERT INTO `score` VALUES (32, 2015, 721, 694);
INSERT INTO `score` VALUES (33, 2016, 715, 687);
INSERT INTO `score` VALUES (34, 2017, 705, 671);
高考数据统计模板:
excel的统计结果
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图的更多相关文章
-
Python爬取招聘信息,并且存储到MySQL数据库中
前面一篇文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为前一天的,同时将爬取的内容保存到数据库中:这篇文章主要讲述如何将python文件压缩成exe可执行文件,供后面的操作. 这系列文章 ...
-
phpexcel的写操作将数据库中的数据导入到excel中
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持.于是乎我就将它转化为2003.感觉支持地很好. 下面介绍一下具体的使用: require_once('. ...
-
将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
-
向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...
-
Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...
-
python操作MySQL数据库并将数据写入excel
#!/usr/bin/python# -*- coding:utf-8 -*-'''方法:通过pymsql模块连接mysql数据库,然后通过游标cursor查询SQL语句将结果存储在Excel文件中, ...
-
利用python将mysql中的数据导入excel
Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...
-
Kettle实现从数据库中提取数据到Excel
因为有个日常提数,工作日每天都要从数据库中提取数据,转换为excel,再以邮件的形式发给用户. 刚好近期同事在研究使用kettle自动提数且完成邮件的发送,觉得很实用又挺有意思的就学了一下这个技能~ ...
-
NPOI从数据库中导出数据到Excel
首先要添加NPOI.dll程序集 https://yunpan.cn/cMeSTELJSXmJJ 访问密码 8d83 把里面的程序集都添加到引用里 下面的代码是从数据库导出到Excel { //pa ...
随机推荐
-
ASP.NET Forms 身份验证
ASP.NET Forms 身份验证 在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数.2. 创建登录页. 登录页中的操作包括: 1. 验证用 ...
-
【leetcode】Length of Last Word
题目简述 Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return ...
-
java中 File文件常用操作方法的汇总
一.IO流: 1.全称为:Input Output---------输入输出流. 输入:将文件读到内存中. 输出:将文件从内存中输出到其他地方. 2.IO技术的作用: 主要是解决设备与设备之间的数据传 ...
-
[keepalved]主从上同时出现VIP,无法消失情况
双主架构中,keepalived日志出现: more /var/log/messageOct 9 03:16:22 mysql-dzg-60-148 Keepalived_vrrp[8526]: VR ...
-
java中的堆、栈、常量池以及String类型的两种声明
参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...
-
JAX-RS入门 二 :运行
上一节,已经成功的定义了一个REST服务,并且提供了具体的实现,不过我们还需要把它运行起来. 在上一节的装备部分,列举了必须的jar(在tomcat中运行)和可选的jar(作为一个独立的应用程序运行) ...
-
CppCon - Modern Template Metaprogramming 杂记
2014年底才看到github和channel9上有CppCon2014的视频和资料,顿时激动不已.最近小生也一直在研习CppCon2014中令人兴奋的内容.这篇鄙文就是小生学习了<Modern ...
-
eclipse提交到git
前言 今天是我正式加入GitHub的第一天,作为世界上最大的同性交友社区,以push和pull出名的它,让我坠入其中并无法自拔,废话不多说,上教程: 步骤一 首先,你需要注册一个github账号,相信 ...
-
Ext.NET Ext.JS 常用代码片段摘录
引言 最近写代码突然有"一把梭"的感觉, 不管三七二十一先弄上再说. 换别人的说法, 这应该是属于"做项目"风格法吧. 至于知识体系, 可以参考官方或者更权威的 ...
-
python2x与3x下使用urlretrieve下载文件
1.python2x下urlretrieve方法: 直接将远程数据下载到本地. urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 参数 ...