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. [转]Linux网络 - 数据包的发送过程

    转, 原文:https://segmentfault.com/a/1190000008926093 -------------------------------------------------- ...

  2. 1210 BBS admin后台管理及侧边栏筛选个人站点

    目录 昨日内容 django admin后台管理 使用 建表 用户图片的显示 MEDIA用户配置 查找照片 搭建个人站点 防盗链 新建css文件 侧边栏展示标签 定义分类栏与标签栏 定义时间栏 侧边栏 ...

  3. 软件测试过程中如何区分什么是功能bug,什么是需求bug,什么是设计bug?

    问题描述: 测试过程中如何区分什么是功能bug,什么是需求bug,什么是设计bug? 精彩答案: 会员 土土的豆豆: 本期问题其实主要是针对不同方面或纬度上对于bug的一个归类和定位. 个人认为,从软 ...

  4. 应该知道的linux命令

    常用命令 1.在compose Bar下可以对多个服务器同时进行操作.选择To All Sessions 2. 查看JAVA进程: ps -ef | grep java ps auxf | grep ...

  5. java利用反射动态获取实体类的属性值

    直接贴代码吧,有需要的话,可以根据自己的需要修改部分代码: public BigDecimal getByAttributeName(ThmdGwqriR thmdGwqriR, String att ...

  6. Springboot打包及远程调试

    如果您使用Spring Boot Maven或Gradle插件来创建可执行jar,则可以使用来运行您的应用程序java -jar,如以下示例所示: $ java -jar target / myapp ...

  7. 直接获取任意对象的 $('.xx').css('x') 值都是0

    <!-- 任意对象,直接获取他们的 x , y 都是为0: $('#xxx').css('x','y'); --> <!DOCTYPE html> <html lang= ...

  8. vue组件传值的三种方式,文字版解释

    父传子: 当子组件子父组件中当标签使用的时候,给子组件添加一个自定义属性,值为需要传递的值(如: <Child v-bind:parentToChild="parentMsg" ...

  9. Python学习之--字符串的使用

    一.大小写转换 1. 首字母大写:title(); 如下: 2. 大写转换:upper(),如 3.小写转换:lower(),如 二.合并(拼接)字符串:”+“ 1. 2.  三.制表符.换行 制表符 ...

  10. SSM + ehcache 异常

    异常如下: 十二月 26, 2017 1:24:44 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: At least one JAR was ...