本文實例講述了Python實現(xiàn)導(dǎo)出數(shù)據(jù)生成excel報表的方法。分享給大家供大家參考,具體如下:
#_*_coding:utf-8_*_import MySQLdbimport xlwtfrom datetime import datetimedef get_data(sql): # 創(chuàng)建數(shù)據(jù)庫連接. conn = MySQLdb.connect(host='127.0.0.1',user='root'/ ,passwd='123456',db='test',port=3306,charset='utf8') # 創(chuàng)建游標(biāo) cur = conn.cursor() # 執(zhí)行查詢, cur.execute(sql) # 由于查詢語句僅會返回受影響的記錄條數(shù)并不會返回數(shù)據(jù)庫中實際的值,所以此處需要fetchall()來獲取所有內(nèi)容。 result = cur.fetchall() #關(guān)閉游標(biāo) cur.close() #關(guān)閉數(shù)據(jù)庫連接 conn.close # 返給結(jié)果給函數(shù)調(diào)用者。 return resultdef write_data_to_excel(name,sql): # 將sql作為參數(shù)傳遞調(diào)用get_data并將結(jié)果賦值給result,(result為一個嵌套元組) result = get_data(sql) # 實例化一個Workbook()對象(即excel文件) wbk = xlwt.Workbook() # 新建一個名為Sheet1的excel sheet。此處的cell_overwrite_ok =True是為了能對同一個單元格重復(fù)操作。 sheet = wbk.add_sheet('Sheet1',cell_overwrite_ok=True) # 獲取當(dāng)前日期,得到一個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+當(dāng)前日期作為excel名稱保存。 wbk.save(name+str(today_date)+'.xls')# 如果該文件不是被import,則執(zhí)行下面代碼。if __name__ == '__main__': #定義一個字典,key為對應(yīng)的數(shù)據(jù)類型也用作excel命名,value為查詢語句 db_dict = {'test':'select * from student'} # 遍歷字典每個元素的key和value。 for k,v in db_dict.items(): # 用字典的每個key和value調(diào)用write_data_to_excel函數(shù)。 write_data_to_excel(k,v)
希望本文所述對大家Python程序設(shè)計有所幫助。
新聞熱點
疑難解答
圖片精選