python制作简单excel统计报表2之操作excel的模块openpyxl简单用法
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简单用法的更多相关文章
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法
☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...
- python制作简单excel统计报表1之with的简单用法
# coding=utf-8 def open_file(): """使用with打开一个文件""" # 普通操作文件方法 # f = op ...
- Python制作动态二维码只需要一行代码!炒鸡简单!
分享一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. 用法比较简单,直接通过pip安装即可. pip3 install myq ...
- python中使用xlrd、xlwt和xlutils3操作Excel
简单试了下python下excel的操作,使用了xlrd.xlwt和xlutil3:xlrd可以实现excel的读取操作,xlwt则是写入excel操作,xlutils3主要是为了修改excel,简单 ...
- 文件操作和OS模块的简单操作
文件的作用 大家应该听说过一句话:“好记性不如烂笔头”. 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电 ...
- 说出来你可能不信,我用excel就能做一张高端的统计报表
统计报表是指各级企事业.行政单位按规定的表格形式.内容.时间要求报送程序,自上而下统一布置,提供统计资料的一种统计调查方式.统计报表具有来源可靠.回收率高.方式灵活等特点,是各个基层企业或事业单位填报 ...
- 利用FusionCharts制作统计报表
今天在开发中需要用到统计报表,于是就查找了一下FusionCharts的用法,下面来总结一下利用FusionCharts怎么制作统计报表 1.建表 首先要建立所要统计报表的表,表的字段越多,统计的维度 ...
- python通过openpyxl操作excel
python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...
随机推荐
- Linux 反弹shell(二)反弹shell的本质
Linux 反弹shell(二)反弹shell的本质 from:https://xz.aliyun.com/t/2549 0X00 前言 在上一篇文章 Linux反弹shell(一)文件描述符与重定向 ...
- MyBatis_tp50_动态sql_sql标签_抽取可重用的sql片段_使用include标签进行引用
笔记要点出错分析与总结 include内部使用自定的属性,之能使用$ {}来取值 ,#{}不能用 工程组织数据库组织0.重新修改Bean类1.定义接口 public interface Employe ...
- C#屏蔽Alt+F4组合键
在开发的软件不希望用户关闭的情况下,或者我们不想用户回到桌面,这时候我们就需要屏蔽windows键,或者Alt + F4 键等. //1.将窗体的属性KeyPrieview设置为true //keyp ...
- vscode常用快捷键总结
记住快捷键能够提高工作效率 Ctrl+Shift+P,F1 展示全局命令面板 Ctrl+P 快速打开最近打开的文件 Ctrl+Shift+N 打开新的编辑器窗口 Ctrl+Shift+W 关闭编辑器 ...
- js与jquery中html() text() val()中的区别
首先html() text() val() 是jquery方法. 1.html()取得内容可以包含标签. 2.text()取得内容为元素文本内容. 3.val()只有value属性的元素才能使用该方法 ...
- 语义(Semantics)
流计算语义(Semantics)的定义 每一条记录被流计算系统处理了几次 有三种语义: 1.At most once 一条记录要么被处理一次,要么没有被处理 2.At least once 一条记录可 ...
- RCNN,Fast RCNN,Faster RCNN 的前生今世:(2) R- CNN (3,2,1)
3.三次IOU 2.2次model run 1,一次深度神经网络 rcnn主要作用就是用于物体检测,就是首先通过selective search 选择2000个候选区域,这些区域中有我们需要的所对 ...
- 学习Spring-Data-Jpa(五)---可嵌入对象和元素集合的使用
1.场景一:地址信息(省.市.县.详细地址)在很多实体中都需要,比如说作者有地址,订单也有地址,但是他们的地址并不能独立与他们存在,所以地址不能映射为实体,那么我们就需要在作者实体和订单实体中都添加这 ...
- Spring asm
Spring 获取类的详细信息,以及方法时候,是通过asm 字节码进行获取的,在平时中我们也可以依赖spring 进行处理我们的类 //可以获取类的详细信息,比如父类上谁,类上面的注解 ,是否上接口 ...
- 数据库Count 语句详解
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查.在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更是 ...