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+Selenium的WebUI自动化测试框架(十二)-----读取Excel文件(POI)(2)

    上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private stati ...

  2. error: invalid-first-character-of-tag-name错误解决方案

    HTML 特殊字符写法要用原始码,例如: ‘<’ 原始码为 < ‘>’ 原始码为 > 解决示例: 原错误代码 <div><</div> 修改后代码 ...

  3. [Exception] java.util.MissingFormatArgumentException

    java.util.MissingFormatArgumentException: Format specifier 's' at java.util.Formatter.format(Formatt ...

  4. 项目中使用express,只是单纯项目中使用

    安装express npm install express --save-dv 建议安装到dev依赖里面 安装body-parse npm install body-parser --save-dev ...

  5. C# 6.0 中的新增功能(.NET Framework 4.6 与 Visual Studio 2015 )

    C#6.0 在 2015 年7月随着.NET Framework 4.6 一同发布,后期发布了.NET Framework 4.6.1,4.6.2. 一.自动属性初始化(Auto-property i ...

  6. matlab的diff()函数

    diff():求差分 一阶差分 X = [1 1 2 3 5 8 13 21]; Y = diff(X) 结果: Y = 0 1 1 2 3 5 8 X = [1 1 1; 5 5 5; 25 25 ...

  7. 解决SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'XX'的问题

    内容简介 今天遇到一个异常,报出消息为SQL Error: 0, SQLState: S1009,Invalid value for getLong() - 'PH',排查问题后,结果令人哑然失笑,也 ...

  8. pycharm flask debug调试接口

    pycharm中对某接口调试,使用print打印日志太麻烦,可以通过debug模式来调试 一.首先开启flask的debug开关 编辑configurations 勾选FLASK_DEBUG选项 已d ...

  9. 【概率论】6-2:大数定理(The Law of Large Numbers)

    title: [概率论]6-2:大数定理(The Law of Large Numbers) categories: - Mathematic - Probability keywords: - Ma ...

  10. 1066 Root of AVL Tree (25)

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...