Python導出數據生成excel報表


#_*_coding:utf-8_*_

import MySQLdb
import xlwt
from datetime import datetime

def get_data(sql):

    # 創建數據庫連接.
    conn = MySQLdb.connect(host='127.0.0.1',user='root'\
                           ,passwd='123456',db='test',port=3306,charset='utf8')
    # 創建游標
    cur = conn.cursor()
    # 執行查詢,
    cur.execute(sql)
    # 由於查詢語句僅會返回受影響的記錄條數並不會返回數據庫中實際的值,所以此處需要fetchall()來獲取所有內容。
    result = cur.fetchall()
    #關閉游標
    cur.close()
    #關閉數據庫連接
    conn.close
    # 返給結果給函數調用者。
    return result    
    
def write_data_to_excel(name,sql):

    # 將sql作為參數傳遞調用get_data並將結果賦值給result,(result為一個嵌套元組)
    result = get_data(sql)
    # 實例化一個Workbook()對象(即excel文件)
    wbk = xlwt.Workbook()
    # 新建一個名為Sheet1的excel sheet。此處的cell_overwrite_ok =True是為了能對同一個單元格重復操作。
    sheet = wbk.add_sheet('Sheet1',cell_overwrite_ok=True)
    # 獲取當前日期,得到一個datetime對象如:(2016, 8, 9, 23, 12, 23, 424000)
    today = datetime.today()
    # 將獲取到的datetime對象僅取日期如:2016-8-9
    today_date = datetime.date(today)
    # 遍歷result中的沒個元素。
    for i in xrange(len(result)):
        #對result的每個子元素作遍歷,
        for j in xrange(len(result[i])):
            #將每一行的每個元素按行號i,列號j,寫入到excel中。
            sheet.write(i,j,result[i][j])
    # 以傳遞的name+當前日期作為excel名稱保存。
    wbk.save(name+str(today_date)+'.xls')

# 如果該文件不是被import,則執行下面代碼。
if __name__ == '__main__':
    #定義一個字典,key為對應的數據類型也用作excel命名,value為查詢語句
    db_dict = {'test':'select * from student'}
    # 遍歷字典每個元素的key和value。
    for k,v in db_dict.items():
        # 用字典的每個key和value調用write_data_to_excel函數。
        write_data_to_excel(k,v)    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM