数据库数据导出为excel表格,也可以说是一个很常用的功能了。毕竟不是任何人都懂数据库操作语句的。

下面先来看看完成的效果吧。

数据源

导出结果

依赖

由于是Python实现的,所以需要有Python环境的支持

Python2.7.11

我的Python环境是2.7.11。虽然你用的可能是3.5版本,但是思想是一致的。

xlwt

pip install xlwt

MySQLdb

pip install MySQLdb

如果上述方式不成功的话,可以到sourceforge官网上去下载windows上的msi版本或者使用源码自行编译。

数据库相关

本次试验,数据库相关的其实也就是如何使用Python操作数据库而已,知识点也很少,下述为我们本次用到的一些简单的语句。

连接

conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')

这里值得我们一提的就是最后一个参数的使用,不然从数据库中取出的数据就会使乱码。关于乱码问题,如果还有不明白的地方,不妨看下这篇文章

获取字段信息

1

fields = cursor.description

至于cursor,是我们操作数据库的核心。游标的特点就是一旦遍历过该条数据,便不可返回。但是我们也可以手动的改变其位置。

cursor.scroll(0,mode='absolute')来重置游标的位置

获取数据

获取数据简直更是轻而易举,但是我们必须在心里明白,数据项是一个类似于二维数组的存在。我们获取每一个cell项的时候应该注意。

1

results = cursor.fetchall()

同样,这里讲解的也是如何使用Python来操作excel数据。

workbook

工作薄的概念我们必须要明确,其是我们工作的基础。与下文的sheet相对应,workbook是sheet赖以生存的载体。

1

workbook = xlwt.Workbook()

sheet

我们所有的操作,都是在sheet上进行的。

sheet = workbook.add_sheet("table_message',cell_overwrite_ok=True)

对于workbook 和sheet,如果对此有点模糊。不妨这样进行假设。

日常生活中记账的时候,我们都会有一个账本,这就是workbook。而我们记账则是记录在一张张的表格上面,这些表格就是我们看到的sheet。一个账本上可以有很多个表格,也可以只是一个表格。这样就很容易理解了吧。 :-)

案例

下面看一个小案例。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

# coding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

# __author__ = '郭 璞'

# __date__ = '2016/8/20'

# __Desc__ = 从数据库中导出数据到excel数据表中

import xlwt

import MySQLdb

conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8')

cursor = conn.cursor()

count = cursor.execute('select * from message')

print count

# 重置游标的位置

cursor.scroll(0,mode='absolute')

# 搜取所有结果

results = cursor.fetchall()

# 获取MYSQL里面的数据字段名称

fields = cursor.description

workbook = xlwt.Workbook()

sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True)

# 写上字段信息

for field in range(0,len(fields)):

sheet.write(0,field,fields[field][0])

# 获取并写入数据段信息

row = 1

col = 0

for row in range(1,len(results)+1):

for col in range(0,len(fields)):

sheet.write(row,col,u'%s'%results[row-1][col])

workbook.save(r'./readout.xlsx')

封装

为了使用上的方便,现将其封装成一个容易调用的函数。

封装之后

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

# coding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

# __author__ = '郭 璞'

# __date__ = '2016/8/20'

# __Desc__ = 从数据库中导出数据到excel数据表中

import xlwt

import MySQLdb

def export(host,user,password,dbname,table_name,outputpath):

conn = MySQLdb.connect(host,user,password,dbname,charset='utf8')

cursor = conn.cursor()

count = cursor.execute('select * from '+table_name)

print count

# 重置游标的位置

cursor.scroll(0,mode='absolute')

# 搜取所有结果

results = cursor.fetchall()

# 获取MYSQL里面的数据字段名称

fields = cursor.description

workbook = xlwt.Workbook()

sheet = workbook.add_sheet('table_'+table_name,cell_overwrite_ok=True)

# 写上字段信息

for field in range(0,len(fields)):

sheet.write(0,field,fields[field][0])

# 获取并写入数据段信息

row = 1

col = 0

for row in range(1,len(results)+1):

for col in range(0,len(fields)):

sheet.write(row,col,u'%s'%results[row-1][col])

workbook.save(outputpath)

# 结果测试

if __name__ == "__main__":

export('localhost','root','mysql','test','datetest',r'datetest.xlsx')

测试结果

1

2

3

4

5

6

7

id name date

1 dlut 2016-07-06

2 清华大学 2016-07-03

3 北京大学 2016-07-28

4 Mark 2016-08-20

5 Tom 2016-08-19

6 Jane 2016-08-21

总结

回顾一下,本次试验用到了哪些知识点。

•Python简易操作数据库

•Python简易操作Excel

•数据库取出数据乱码问题解决之添加charset=utf-8

•以二维数组的角度来处理获取到的结果集。

以上这篇Python实现将数据库一键导出为Excel表格的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

python生成excel表格-Python实现将数据库一键导出为Excel表格的实例相关推荐

  1. python如何读取数据并输出为表格_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  2. python 销售数据分析输出表格_Python实现将数据库一键导出为Excel表格的实例

    Python实现将数据库一键导出为Excel表格的实例 下面小编就为大家带来一篇Python实现将数据库一键导出为Excel表格的实例.小编觉得挺不错的,现在就分享给大家, 数据库数据导出为excel ...

  3. python数据导出excel模板中的脚本_Python实现将数据库一键导出为Excel表格的实例...

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  4. python数据导出excel_Python实现数据库一键导出为Excel表格-----转载

    数据库数据导出为excel表格,也可以说是一个很常用的功能了.毕竟不是任何人都懂数据库操作语句的. 下面先来看看完成的效果吧. 数据源 导出结果 依赖 由于是Python实现的,所以需要有Python ...

  5. 将数据库数据导出到Excel中,并可以在浏览器上下载Excel

    将数据库数据导出到Excel中,并可以在浏览器上下载Excel 附代码: //设置文件保存路径 public static String url ="F:\\Workspase\\BackC ...

  6. 数据库数据导出到Excel

    数据库数据导出到Excel 从数据库中获取数据,使用java建立一个新建Excel,添加表头,并将数据存储到Excel表格中的对应位置上. 在新建一个Excel时,我们会需要定义一些特别的Excel格 ...

  7. c 语言如何处理表格文件中的数据库,C#程序从Excel表格中读取数据并进行处理

    今天做了一个Excel表格数据处理的事情,因为数据量表较大(接近7000条)所以处理起来有点麻烦,于是写了一个程序, 先将程序记下以便将来查找. using System; using System. ...

  8. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...

    php 怎么把数据导出到excel表格 php 把数据导出到excel表多种方法如使用 phpExcel 等,以下代码是直接通 header 生成 excel 文件的代码示例: header(&quo ...

  9. python导出数据到excel文件_Python笔记:把数据导出到Excel文件上

    相信初学Python数据分析的小伙伴都发现了,只是把数据加载在Python的环境中做数据处理还不够,因为环境的问题(Python加载进来的只是一张虚拟表,数据暂存内存中),我们最终还是需要把粗加工好的 ...

最新文章

  1. 字节跳动副总裁杨震原:A/B测试不是万能的,但不会一定不行
  2. as3(actionScript3.0) 操作摄像头(Camera)实例
  3. linux ppp拨号 socket,请问GPRS模块ppp拨号不成功是什么原因
  4. 关于图像语义分割的总结和感悟
  5. eclipse 设置豆沙绿保护色,保护眼睛
  6. html自动执行bat,html文件执行cmd指令
  7. 官宣!极客邦科技获2000万元 A 轮融资,全面发力知识服务平台
  8. php面试带项目_PHP面试常用算法(推荐)
  9. 最简单、图解:阿里云服务器上装 Docker 、 CentOS上 docker安装(3分钟装完)
  10. Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
  11. 进程调度(一)--linux内核设计与实现读书笔记
  12. 每日一题/006/矩阵/设 n阶实对称矩阵 A满足 A^2=A,且 A 的秩为r,试求行列式 det(2E-A) 的值
  13. 去掉高德api上的logo图标
  14. JSON.stringify的认知历程
  15. 裤子尺码对照表eur40_有了裤子尺码对照表,再也不用担心买错裤子了
  16. 哈佛幸福课中提到的书_借助虚拟现实,在哈佛最大的班级中排在前列
  17. r语言c函数调用一个数据多列,r语言如何将多列数据变成一列
  18. 【springboot3.x 记录】解决 springboot3 集成 mybatis-plus 报 sqlSession 异常
  19. 计算机选取多个目标按什么键,连续选择多个按什么键
  20. G003-181-19

热门文章

  1. show line numbers
  2. Web前端JQuery面试题(三)
  3. VS2013安装MVC5
  4. 想学Python,怎么开始才好呢?
  5. 在SQL Server 2005 Express 中添加报表服务后 (Business Intelligence Development Studio) vs2005 加载程序集问题解决办法...
  6. [Ubuntu]更改所有子文件和子目录所有者权限
  7. 虚拟化技术中,为什么说容器技术暂时将不会取代虚拟机模式
  8. 在QLabel上同时显示文字和图片的方法
  9. java 2类与对象[学堂在线]
  10. 每日站立会议10(完成)