python制作简单excel统计报表2之操作excel的模块openpyxl简单用法

# coding=utf-8

from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image
from openpyxl.styles import Font,colors
from datetime import datetime import MySQLdb class ExcelUtils(object):
"""
pip install openpyxl
pip install pillow
pip install mysqlclient
参考文档:https://openpyxl.readthedocs.io/en/stable
"""
def __init__(self):
self.wb = Workbook()
# 激活表单
self.ws = self.wb.active
self.ws_two = self.wb.create_sheet('我的表单')
self.ws.title = '你的表单'
self.ws.sheet_properties.tabColor = 'ff000000'
self.ws_three = self.wb.create_sheet() def do_sth(self):
# 插入数据
self.ws['A1'] = 66
self.ws['A2'] = '你好'
self.ws['A3'] = datetime.now() # 批量插入数字
for row in self.ws_two['A1:E5']:
for cell in row:
cell.value = 2 # 对数据进行求和
self.ws_two['G1'] = '=SUM(A1:E1)' # 插入图片
# img = Image('./static/temp.jpg')
# self.ws.add_image(img,'B1') # 合并单元格
self.ws.merge_cells('A4:E5')
self.ws.unmerge_cells('A4:E5') # 插入文字
font = Font(sz=18,color = colors.RED)
self.ws['A2'].font = font self.wb.save('./static/test.xlsx') def read_xls(self):
"""
读取excel数据
:return:
"""
ws = load_workbook('./static/templates.xlsx')
names = ws.get_sheet_names()
print(names) # 获取sheet的三种方法
# wb = ws.active
# wb = ws['北京大学统计']
wb = ws[names[0]]
# 先读取行
for row in wb.rows:
# 再读取列
for cell in row:
print(cell.value) def get_conn(self):
""" 获取mysql的连接"""
try:
self.conn = MySQLdb.connect(
host="localhost",
port=3306,
user="root",
password="root",
db="user_grade",
)
except MySQLdb.Error as e:
print("Error %d:%s" % (e.args[0], e.args[1])) return self.conn def import_excel_todb(self): # 将excel中的内容导入数据库中
ws = load_workbook('./static/templates.xlsx')
names = ws.get_sheet_names()
# 获取数据的sheet
wb = ws[names[0]] conn = self.get_conn()
for (i,row) in enumerate(wb.rows):
# 跳过标题部分
if i < 2:
continue
# 获取年份,最高分,平均分
year = wb['A{0}'.format(i+1)].value
max = wb['B{0}'.format(i+1)].value
avg = wb['C{0}'.format(i+1)].value
# print(year, max, avg) cur = conn.cursor()
# sql = "insert into score(year,max,avg) values(2005, 695, 468)"
sql = "insert into score(year,max,avg) values({year},{max},{avg})".format(year = year,max = max,avg = avg)
cur.execute(sql)
conn.autocommit(True)
conn.close() def export_db_toexcel(self): # 从数据库导数据到excel里面
# 从数据库中获取数据
conn = self.get_conn()
cur = conn.cursor()
cur.execute("select year,max,avg from score")
# 获取所有数据
rows = cur.fetchall()
# for row in rows:
# print(row[0],row[1],row[2]) wb = Workbook()
ws = wb.active
ws.title = "高考成绩" for (i,row) in enumerate(rows):
# 单个赋值
# ws['A{0}'.format(i+1)] = row[0]
# ws['B{0}'.format(i+1)] = row[1]
# ws['C{0}'.format(i+1)] = row[2] # 批量赋值
(ws['A{0}'.format(i+1)],
ws['B{0}'.format(i + 1)],
ws['C{0}'.format(i + 1)]
) = row wb.save("./static/myscore.xlsx") # 关闭数据库连接
conn.close() if __name__ == "__main__":
client = ExcelUtils()
# client.do_sth()
# client.read_xls()
# conn = client.get_conn()
# client.import_excel_todb()
client.export_db_toexcel()

建表语句:

CREATE TABLE `score` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`year` int(11) DEFAULT NULL,
`max` int(11) DEFAULT NULL,
`avg` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

static/templates.xlsx

插入数据库的信息:

python制作简单excel统计报表2之操作excel的模块openpyxl简单用法的更多相关文章

  1. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  2. Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法

    ☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...

  3. python制作简单excel统计报表1之with的简单用法

    # coding=utf-8 def open_file(): """使用with打开一个文件""" # 普通操作文件方法 # f = op ...

  4. Python制作动态二维码只需要一行代码!炒鸡简单!

    分享一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. 用法比较简单,直接通过pip安装即可. pip3 install myq ...

  5. python中使用xlrd、xlwt和xlutils3操作Excel

    简单试了下python下excel的操作,使用了xlrd.xlwt和xlutil3:xlrd可以实现excel的读取操作,xlwt则是写入excel操作,xlutils3主要是为了修改excel,简单 ...

  6. 文件操作和OS模块的简单操作

    文件的作用 大家应该听说过一句话:“好记性不如烂笔头”. 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电 ...

  7. 说出来你可能不信,我用excel就能做一张高端的统计报表

    统计报表是指各级企事业.行政单位按规定的表格形式.内容.时间要求报送程序,自上而下统一布置,提供统计资料的一种统计调查方式.统计报表具有来源可靠.回收率高.方式灵活等特点,是各个基层企业或事业单位填报 ...

  8. 利用FusionCharts制作统计报表

    今天在开发中需要用到统计报表,于是就查找了一下FusionCharts的用法,下面来总结一下利用FusionCharts怎么制作统计报表 1.建表 首先要建立所要统计报表的表,表的字段越多,统计的维度 ...

  9. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

随机推荐

  1. java基础(8)---接口和lambda

    一.接口  接口定义:  接口抽象方法定义: 二.接口实现类的定义.创建.调用 接口需要一个实现类. 接口实现类的定义: 接口实现类的创建和调用:  接口的好处:  不好的写法: 推荐的写法: 接口实 ...

  2. Java volatile关键字实现原理

    场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存. 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工 ...

  3. xss获取cookie源码附利用代码

    保存为cookie.asp <% testfile=Server.MapPath("cookies.txt") msg=Request("msg") se ...

  4. test20190519 NOIP 模拟赛 3

    序列 [问题描述] 作为一名火星人,你为了占领地球,需要想方设法使地球人失去信心.现在你获得了一项能力,控制今后 n 天的天气温度,对于第 i 天,你能将温度控制在[ai,bi]中任意一个数字, 你的 ...

  5. Python程序格式规范

    Python是一种计算机编程语言.计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能 ...

  6. 物体检测方法(1) - YOLO 详解

    最近遇到一些卡证识别的检测问题,打算先把理论知识梳理一下,随后还会梳理一版代码注释. 以前的region+proposal来检测的框架,这一系列速度和精度不断提高,但是还是无法达到实时.存在的主要问题 ...

  7. 012——软件安装之_matlab2019安装

    (一)参考文献:https://www.isharepc.com/14196.html (二)下载地址: 链接:https://pan.baidu.com/s/1gq06TuBWGr1Qc4owpRX ...

  8. neo4j安装部署

    链接: https://blog.csdn.net/u013946356/article/details/81736232

  9. mysqldump 原理(转载)

    mysqldump 备份过程可以描述为: (1) 先发出一条 flush tables 关闭实例上所有打开的表(2) 创建一个全局锁,FLUSH TABLES WITH READ LOCK获得 db ...

  10. Memcached 与 Redis 区别

    一.问题:     数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求.   二.解决方案:      1.通过高速服务器Cache缓存数据库数据      2.内存数据库     ( ...