SQL+Excel怎么进行数据统计

描述

 

数据表

 

一.项目背景
 

  •  
  •  
  •  
   本项目主要是想给大家介绍一下如何利用数据表(SQL)对已经给定Excel模板对数据
   进行处理统计,主要是涉及一些单元格的操作,也同时给大家介绍下如何利用openpyxl来
绘制图形,本次数据表和给定Excel模板如下图所示。

 

数据表

数据表
 

 

数据表

Excel模板文件
 

 

二.实现过程

1.数据准备
》》初始化连接
》》初始化文本
#初始化
class emp_xlsx():
    def __init__(self, host, user, password, database):
        #初始化连接信息
        self.conn = pymysql.connect(host=host,
                                    user=user,
                                    password=password,
                                    database=database
                                    )
        #初始化模板文件
        self.wb = load_workbook('./temp.xlsx')
        #获取sheet页签
        self.ws = self.wb.active
        #页签名
        self.ws.title = '员工薪资统计'
        #页签颜色属性
        self.ws.sheet_properties.tabColor = 'ff0000'
2.获取数据
》》执行sql语句
    def export_xlsx(self):
        #建立连接
        cursor=self.conn.cursor()
        try:
            #执行sql语句(如果数据量大,需要借助于分页查询)
            cursor.execute('select eno,name,salary from emp')
            #获取数据
            rows=cursor.fetchall()
        except Exception as e:
            print(e)
2.获取数据
》》执行sql语句
    def export_xlsx(self):
            #建立连接
        cursor=self.conn.cursor()
        try:
            #执行sql语句(如果数据量大,需要借助于分页查询)
            cursor.execute('select eno,name,salary from emp')
            #获取数据
            rows=cursor.fetchall()
        except Exception as e:
            print(e)
3.存储数据
》》设置属性
》》保存图表
 #写入行号id
         row_id = 13
        #遍历每行数据
        for (i,row) in enumerate(rows):
            (self.ws['B{0}'.format(row_id)],
             self.ws['C{0}'.format(row_id)],
             self.ws['D{0}'.format(row_id)])=row
            row_id += 1

        #显示图表
        chart = BarChart()
        #设置图表名称
        chart.title = "薪资统计表"
        #设置显示风格
        chart.style = 16
        #设置x轴坐标轴名称
        chart.x_axis.title = '姓名'
        #设置y轴坐标轴名称
        chart.y_axis.title = '薪资'

        #横坐标
        cats = Reference(self.ws, min_col=3, min_row=13, max_row=row_id)
        #数据区域
        data = Reference(self.ws, min_col=4, min_row=12,  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))
        #保存数据
        self.wb.save('./emp.xlsx')

 

数据表

                                                       结果文件
 

 

三.完整代码

import pymysql
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference


#初始化
class emp_xlsx():
    def __init__(self, host, user, password, database):
        #初始化连接信息
        self.conn = pymysql.connect(host=host,
                                    user=user,
                                    password=password,
                                    database=database
                                    )
        #初始化模板文件
        self.wb = load_workbook('./temp.xlsx')
        #获取sheet页签
        self.ws = self.wb.active
        #页签名
        self.ws.title = '员工薪资统计'
        #页签颜色属性
        self.ws.sheet_properties.tabColor = 'ff0000'
    
    #导出数据
    def export_xlsx(self):
        #建立连接
        cursor=self.conn.cursor()
        try:
            #执行sql语句(如果数据量大,需要借助于分页查询)
            cursor.execute('select eno,name,salary from emp')
            #获取数据
            rows=cursor.fetchall()
        except Exception as e:
            print(e)

        #写入行号id
        row_id = 13
        #遍历每行数据
        for (i,row) in enumerate(rows):
            (self.ws['B{0}'.format(row_id)],
             self.ws['C{0}'.format(row_id)],
             self.ws['D{0}'.format(row_id)])=row
            row_id += 1

        #显示图表
        chart = BarChart()
        #设置图表名称
        chart.title = "薪资统计表"
        #设置显示风格
        chart.style = 16
        #设置x轴坐标轴名称
        chart.x_axis.title = '姓名'
        #设置y轴坐标轴名称
        chart.y_axis.title = '薪资'

        #横坐标
        cats = Reference(self.ws, min_col=3, min_row=13, max_row=row_id)
        #数据区域
        data = Reference(self.ws, min_col=4, min_row=12,  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))
        #保存数据
        self.wb.save('./emp.xlsx')

#初始化连接
new_mysql=emp_xlsx('127.0.0.1',
                        'root',
                        '253611',
                        'company')
#导出数据
new_mysql.export_xlsx()
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分