Python對Excel的讀寫主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter幾種。
如下分別利用xlwt和openpyxl將mysql數據庫中查詢的數據保存到excel中(注意:xlwt不支持.xlsx文件):
一、從mysql查詢數據
import mysql.connector conn=mysql.connector.connect(host='xx.xx.xx.xx',user='root', passwd='password', db='test') cursor = conn.cursor() sql = 'select * from table1 limit 5' cursor.execute(sql) datas=cursor.fetchall() conn.commit() cursor.close() conn.close() print(datas)
二、分別利用xlwt和openpyxl將datas數據保存到excel
1、xlwt寫入數據示例代碼
import xlwt def set_style(name, height, bold = False): style = xlwt.XFStyle() #初始化樣式 font = xlwt.Font() #為樣式創建字體 font.name = name font.bold = bold font.color_index = 4 font.height = height style.font = font return style def write_excel(datas,filename): #創建工作簿 workbook = xlwt.Workbook(encoding='utf-8') #創建sheet data_sheet = workbook.add_sheet('demo') row0 = [u'地市', u'country', '時間', '溫度','濕度','雨量','風速'] for i in range(len(row0)): data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True)) nrows=len(datas) for i in range(nrows): for j in range(len(row0)): data_sheet.write(i+1,j,datas[i][j]) # 工作簿保存到磁盤 workbook.save(filename)
2、openpyxl寫入數據示例代碼
from openpyxl.workbook import Workbook from openpyxl.utils import get_column_letter from openpyxl.styles import Font def write_excel_openpyxl1(datas,filename): # 在內存創建一個工作簿obj wb = Workbook() # 將workbook obj寫到excel文件 # ew = ExcelWriter(workbook=wb) ew=wb.active # 設定第一個sheet頁,好像第一個sheet只能這樣設定 ws = wb.worksheets[0] ws.title=u'天氣' # 向第一個sheet頁寫數據吧 i = 1 for line in datas: for col in range(1,len(line)+1): ColNum = get_column_letter(col) ws.cell('%s%s'%(ColNum,i)).value = line[col-1] i += 1 # 工作簿保存到磁盤 wb.save(filename) def write_excel_openpyxl(datas,filename): # 在內存創建一個工作簿obj result_wb = Workbook() #第一個sheet是ws ws1 = result_wb.worksheets[0] # ws1=wb1.create_sheet('result',0) #設置ws的名稱 ws1.title = "天氣" row0 = [u'地市', u'country', '時間', '溫度','濕度','雨量','風速'] ft = Font(name='Arial', size=11, bold=True) for k in range(len(row0)): ws1.cell(row=1,column=k+1).value=row0[k] ws1.cell(row=1,column=k+1).font=ft for i in range(1,len(datas)+1): for j in range(1,len(row0)+1): # col=get_column_letter(j) # ws1.cell('%s%s'%(col,i)).value='%s' % (data[j-1]) ws1.cell(row=i+1,column=j).value=datas[i-1][j-1] # 工作簿保存到磁盤 result_wb.save(filename = filename)
三、調用函數
write_excel_openpyxl(datas,'result.xlsx') write_excel_openpyxl1(datas,'result1.xlsx') write_excel(datas,'result2.xls')
結果保存到.xlsx和.xls文件中,完成!