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 以上版本进行操作 ...
随机推荐
- IDEA实用教程(十)—— 配置Maven的全局设置
使用之前需要提前安装好Maven 第一步 第二步
- 重装windows10系统的教程
1.首先从官网上下载一个win10的系统, 2.准备一个8GB的移动U盘,下载好的镜像文件烧录在这个U盘, 3.按照不同型号的机型,使用不同的按键进入BOIS模式,然后选中U盘作为启动项,读取出来这个 ...
- 用数组实现strstr函数
用数组实现strstr函数char * mystrstr(char * dest, char *src){ int i = 0; int j = 0; //匹配个数 int count = 0; in ...
- 《Exception团队》第七次作业:团队项目设计完善&编码
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件编码实现的工程要求 作业任务 1. ...
- 【Java】《Java程序设计基础教程》第三章学习
3.1 类 类在Java语言中是一种最基本的引用数据类型,是组成Java程序的基本要素.具有相同属性(状态)和方法(行为)的一组对象的集合称为类,其内部包括属性和方法两个主要部分. 3.11 类的定义 ...
- Linux - python pip3 无法使用情况
Linux 下使用 pip3 出了这样一个错误 error while loading shared libraries: libpython3.7m.so.1.0: cannot open shar ...
- Python3和Python2中 int 和 long的区别?
int(符号整数):通常被称为是整数或整数,没有小数点的正或负整数: long(长整数):无限大小的整数,这样写整数和一个大写或小写的L.
- Dubbbo
什么是Dubbo Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有 ...
- php 文件包含函数
在实际开发中,常常需要把程序中的公用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可.这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利.在PHP中, 有require.re ...
- 017_Python3 数据结构
本章节我们主要结合前面所学的知识点来介绍Python数据结构. ***************************** 1.列表 Python中列表是可变的,这是它区别于字符串和元组的最重 ...