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 参考文档: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制作成绩报表_python制作简单excel统计报表2之操作excel的模块openpyxl简单用法...相关推荐

  1. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  2. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  3. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  4. python中pow是什么函数_python中pow什么意思

    python中pow什么意思? python中pow() 方法返回 xy(x的y次方) 的值. 语法 以下是 math 模块 pow() 方法的语法:import math math.pow( x, ...

  5. python中的figure什么意思_Python Matplotlib.figure.Figure.text()用法及代码示例

    Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展. Figure模块提供了顶层Artist,即Figure,其中包含所有绘图元素.此模块用于控制所有图元的子图和顶层容器 ...

  6. python中采用字典建立统,Python中使用Counter进行字典创建以及key数量统计的方法...

    这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计.然而,使用的时候还是有一点需要注意的小事项. 使用Counter创建 ...

  7. python购物街竟价项目_python制作视频教程下载地址

    python制作视频教程下载地址内容摘要 python制作视频教程下载地址难,因为开女装店的技术含量和市场入门槛相对较低,因为开办经络保健店郭惠英成了"明星人物",因为很多教程网络 ...

  8. python中查看表头的函数_Python中也可以写Excel中的“Vlookup”函数?太牛逼了吧!...

    原标题:Python中也可以写Excel中的"Vlookup"函数?太牛逼了吧! Vlookup函数,可以算是一个数据专员必须要会使用的基本函数了,确实很好用.但是你可能会注意到, ...

  9. python实现消消乐游戏_Python制作宝石消消乐小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 图片来由于网络 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原 ...

最新文章

  1. 2018谷歌学术指数发布——看看综合、生物、生信、微生物领域高引文章和杂志
  2. JVMTOP JVM 监视工具
  3. restful接口定义的几种方式
  4. 互联网营销离不开“SEO”
  5. 探秘Tomcat——一个简易的Servlet容器
  6. 刚柔并济的开源分布式事务解决方案
  7. Input为number类型maxlength不好使,用js轻松解决
  8. 源码安装 odoo12 -- 问题记录
  9. 考研【文法方向专场讲座】附:通信工程院校排名
  10. Linux下定时器使用
  11. python爬boss网站_python之requests爬虫Boss数据
  12. python的read函数调用报错_从零开始学Python(七):文件存储I/O流和异常捕捉
  13. Servlet(2)
  14. 深度学习2.0-7.tensorflow的高阶操作之数据统计
  15. oracle补丁安装
  16. Ceph集群配置系列《四》Ceph块设备/RBD的使用
  17. poj 3295 Tautology【离散数学之重言式】
  18. c语言 如何对数组取地址,C语言 对数组名取地址
  19. matlab的积分公式,玩转matlab之一维 gauss 数值积分公式及matlab源代码
  20. 基于人体骨架检测的安全警戒线

热门文章

  1. 认识定制:JSON绑定概述系列
  2. 五个使Java变得更好的功能
  3. Spring Web-Flux – Cassandra后端的功能样式
  4. 弃用Java的终结器
  5. Spark简介,您的下一个REST Java框架
  6. akka es/cqrs_在Akka中实现主从/网格计算模式
  7. eclipse鼠标变十了_Eclipse在过去十年中的主要成就
  8. 延迟分析中的案例研究:锁定与同步
  9. 基于Rx-netty和Karyon2的云就绪微服务
  10. 通过Pax考试对JBoss Fuse 6.x进行集成测试,第一部分