目录
实现效果
被读取的数据表
读取得到的学生成绩
实现思路
被读取的数据库的数据表来自前面的系列文章生成数据表,插入数据。
-
建立与数据库的连接,
cursor.fetchall()
读取得到数据。 -
建立一个
excel_workbook
表示excel文件 -
选定要写入数据的sheet表
excel_sheet=excel_workbook.create_sheet("学生成绩表")#在工作簿中建立一个工作学生成绩表,作为当前要写入内容的表
效果如下
excel_sheet=excel_workbook.active #使用默认的sheet表,不新建表,切换当前把数据写入此表
- 写入数据,保存文件
先介绍一下特殊的enumerate循环,高端写法
先把一行表头写入
# openpyxl操作excel是,行和列的索引从1开始,所以要+1, col_id, col_name表示索引和索引内容
for col_id, col_name in enumerate(['sno','sname','sex','age','score']):#列索引,读取那些列的数据
excel_sheet.cell(1,col_id+1,col_name)#往单元格写入数据,第1列表格的表头'sno','sname','sex','age','score'写入
写入value,保存文件
# 写入数据
for row_id,row_emp in enumerate(cursor.fetchall()):#获得每一行的数据
for col_id,col_value in enumerate(row_emp):#把每一行的每一列写入,加2是因为原先表头+1的基础上,再加上表头这一行,所以要+1+1=+2
excel_sheet.cell(row_id+2,col_id+1,col_value)
- 保存文件
excel_workbook.save("读取到的学生成绩.xlsx")
实现代码
# @Time : 2022/1/16 12:46
# @Author : 南黎
# @FileName: 8.数据库导出数据为excel文件.py
import pymysql
import openpyxl # 用户操作excel的库
conn = pymysql.connect(
host='localhost',
user='root',
password='root',
database='python',
port=3306,
autocommit=False,
charset="utf8mb4"
)
#从excel中读取到学生的sno,sname,sex,age,score并放入数据库
try:
with conn.cursor() as cursor:#创建游标,在这里conn.cursor()==cursor
cursor.execute(
'select sno,sname,sex,age,score from student'
)
excel_workbook=openpyxl.Workbook()#创建一个excel工作簿
# excel_sheet=excel_workbook.create_sheet("学生成绩表")#在工作簿中建立一个工作学生成绩表,作为当前要写入内容的表
excel_sheet=excel_workbook.active #使用默认的sheet表,不新建表,切换当前把数据写入此表
#注意数据量比较少的时候用fetchall(),一行一行的读取,这里数据量少就直接fetchall()了
# openpyxl操作excel是,行和列的索引从1开始,所以要+1, col_id, col_name表示索引和索引内容
for col_id, col_name in enumerate(['sno','sname','sex','age','score']):#列索引,读取那些列的数据
excel_sheet.cell(1,col_id+1,col_name)#往单元格写入数据,第1列表格的表头'sno','sname','sex','age','score'写入
# 写入数据
for row_id,row_emp in enumerate(cursor.fetchall()):#获得每一行的数据
for col_id,col_value in enumerate(row_emp):#把每一行的每一列写入,加2是因为原先表头+1的基础上,再加上表头这一行,所以要+1+1=+2
excel_sheet.cell(row_id+2,col_id+1,col_value)
excel_workbook.save("读取到的学生成绩.xlsx")
except pymysql.MySQLError as err:#捕获异常
print(err)#如果出现异常,打印错误信息
finally:
conn.close()#无论如何都要关闭连接,节省资源占用
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python知识!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2022 mzh
Crated:2022-1-15