用pyExcelerator和win32com.client从mysql中导出数据到excel。


# -*- coding: utf-8 -*-

import win32com.client as win32
import MySQLdb
from pyExcelerator import *

addr = raw_input('输入地址: ')


def readdb():
    # 封装数据
    #连接数据库
    conn = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='sign', charset="utf8")
    #获取游标
    cursor = conn.cursor()
    cursor.execute('select * from message_user')
    #取得所有数据
    result = cursor.fetchall()
    #取得数据字段
    fields = cursor.description

   
    #关闭游标和查询链接
    cursor.close()
    conn.close()
    return result,fields,len(result)

 
def checkout(result,fields,address,length):

    #创建新excel文件
    create(address)
   
    app = 'Excel'
    #指定是应用程序是Excel.Application并得到excel.Application对象
    xl = win32.Dispatch('%s.application' % app)
    #得到Workbooks
    xlbook = xl.Workbooks.Open(address)
    #得到名称为data的Sheet对象
    sh1 = xlbook.Worksheets('data')

 

    for l in range(1,len(fields)+1):
        sh1.Cells(1,l).Value=fields[l-1][0]
        #将读取的数据填入到相应的行列中
    for h in range(2,len(result)+2):
        for l in range(1,len(fields)+1):
            sh1.Cells(h,l).Value=result[h-2][l-1]

 

    #判断是否导入成功
    if int(sh1.Cells(h,1)) == len(result):
    #关闭EXCEL程序
        xl.Application.Quit()
        print '导出成功'
        return True
    else:
        xl.Application.Quit()
        print '导出失败'
        return False
   

def create(address):
    #新建文件
    w = Workbook()
    ws = w.add_sheet(r'data')
    w.save(address)
    return True


if __name__ == "__main__":
    #传参          
    a,b,d = readdb()
    c = addr + r'userdb.xls'
    checkout(a,b,c,d)



上面的方法比较繁琐。尤其是往excel里面写数据的时候完全也可以用pyExcelerator搞定。而且解决了上面代码保存以后不能自己关闭excel的问题(需要点击确认保存修改——>OK)




# -*- coding: utf-8 -*-

import MySQLdb
from pyExcelerator import *


addr = raw_input('address: ')

def readdb():
    # 封装数据
    #连接数据库
    conn = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='sign', charset="utf8")
    #获取游标
    cursor = conn.cursor()
    cursor.execute('select * from message_user')
    #取得所有数据
    result = cursor.fetchall()
    #取得数据字段
    fields = cursor.description
   
    #关闭游标和查询链接
    cursor.close()
    conn.close()
    return result,fields,len(result)


 
def checkout(result,fields,address,length):
    #新建文件
    w = Workbook()
    ws = w.add_sheet(r'data')

    for l in range(len(fields)):
        ws.write(0,l,fields[l][0])
        #将读取的数据填入到相应的行列中
    for h in range(1,len(result)+1):
        for l in range(len(fields)):
            ws.write(h,l,result[h-1][l])


    #判断是否导入成功
    if h == len(result):
    #关闭EXCEL程序
        w.save(address)
        print 'Sucess'
        return True
    else:
        w.save(address)
        print 'Fail'
        return False
    

  
if __name__ == "__main__":
    #传参           
    a,b,d = readdb()
    c = addr + r'userdb.xls'
    checkout(a,b,c,d)


要在网页上下载导出的话可以用下面的方法:

def pull(request):
    
    result,fields,length  = readdb()
    
    #新建文件
    w = Workbook()
    ws = w.add_sheet(r'data')


    for l in range(len(fields)):
        ws.write(0,l,fields[l][0])
        #将读取的数据填入到相应的行列中
    for h in range(1,length+1):
        for l in range(len(fields)):
            ws.write(h,l,result[h-1][l])       


    response = HttpResponse(mimetype='application/vnd.ms-excel')  
    response['Content-Disposition'] = 'attachment; filename=userdb.xls'  
    w.save(response)  
    return response  


    
    
def readdb():
    # 封装数据
    #连接数据库
    conn = MySQLdb.connect(host='192.168.2.210', user='root', passwd='root', db='hbl_3', charset="utf8")
    #获取游标
    cursor = conn.cursor()
    cursor.execute('select * from XXXX')
    #取得所有数据
    result = cursor.fetchall()
    #取得数据字段
    fields = cursor.description


    
    #关闭游标和查询链接
    cursor.close()
    conn.close()
    return result,fields,len(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值