詳解Python中xlsxwriter庫的基本操作
xlsxwriter是一個用于創(chuàng)建和修改Excel文件(.xlsx)的Python庫。它提供了豐富的功能,可以創(chuàng)建復(fù)雜的Excel工作簿,包括工作表、圖表、圖像,以及設(shè)置單元格樣式和格式等。
創(chuàng)建一個新的Excel文件并添加工作表
import xlsxwriter # 創(chuàng)建一個新的Excel文件 workbook = xlsxwriter.Workbook('example.xlsx') # 添加一個名為"Sheet1"的工作表 worksheet = workbook.add_worksheet("Sheet1") # 在工作表中寫入數(shù)據(jù) worksheet.write('A1', '姓名') worksheet.write('B1', '年齡') worksheet.write('A2', '張三') worksheet.write('B2', 25) worksheet.write('A3', '李四') worksheet.write('B3', 30) # 保存并關(guān)閉Excel文件 workbook.close()
設(shè)置單元格樣式和格式
import xlsxwriter workbook = xlsxwriter.Workbook('example.xlsx') worksheet = workbook.add_worksheet() # 創(chuàng)建一個加粗的格式對象 bold_format = workbook.add_format({'bold': True}) # 在單元格中寫入數(shù)據(jù),并應(yīng)用加粗格式 worksheet.write('A1', '標(biāo)題', bold_format) worksheet.write('A2', '數(shù)據(jù)1') worksheet.write('B2', 100) # 設(shè)置列寬和行高 worksheet.set_column('A:B', 15) worksheet.set_row(0, 20) workbook.close()
添加圖表
import xlsxwriter workbook = xlsxwriter.Workbook('example.xlsx') worksheet = workbook.add_worksheet() # 寫入一些數(shù)據(jù) data = [10, 20, 30, 40, 50] worksheet.write_column('A1', data) # 創(chuàng)建一個柱狀圖對象 chart = workbook.add_chart({'type': 'column'}) # 添加數(shù)據(jù)系列到圖表中 chart.add_series({ 'values': '=Sheet1!$A$1:$A$5', 'name': '數(shù)據(jù)', }) # 將圖表插入工作表中 worksheet.insert_chart('C1', chart) workbook.close()
寫入MySQL數(shù)據(jù)到Excel
在實際工作中,我們經(jīng)常需要將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到Excel表格中進(jìn)行進(jìn)一步的分析和處理。Python中的pymysql和xlsxwriter庫提供了很好的解決方案,使得這一過程變得簡單而高效。
建立數(shù)據(jù)庫連接
首先,我們需要使用pymysql庫來建立與MySQL數(shù)據(jù)庫的連接,并指定要連接的數(shù)據(jù)庫名稱、用戶名和密碼。
import pymysql connection = pymysql.connect( host='localhost', user='root', password='123456', database='caiwu' )
編寫SQL查詢語句
接下來,我們可以編寫需要執(zhí)行的SQL查詢語句,以獲取所需的數(shù)據(jù)。
query = "SELECT * FROM report_品名"
創(chuàng)建Excel文件對象和工作表對象
使用xlsxwriter庫,我們可以創(chuàng)建一個新的Excel文件和工作表對象,準(zhǔn)備將數(shù)據(jù)寫入其中。
import xlsxwriter workbook = xlsxwriter.Workbook('output.xlsx') worksheet = workbook.add_worksheet()
創(chuàng)建游標(biāo)對象并執(zhí)行SQL查詢
創(chuàng)建游標(biāo)對象,執(zhí)行SQL查詢語句,并獲取查詢結(jié)果的列名。
cursor = connection.cursor() cursor.execute(query) column_names = [i[0] for i in cursor.description]
將查詢結(jié)果寫入Excel文件
遍歷查詢結(jié)果,并將數(shù)據(jù)寫入到Excel文件中。在此過程中,我們還可以對時間字段進(jìn)行格式化處理。
import datetime data = cursor.fetchall() for col_index, col_name in enumerate(column_names): worksheet.write(0, col_index, col_name) for row_index, row_data in enumerate(data): for col_index, col_data in enumerate(row_data): if isinstance(col_data, datetime.datetime): col_data = col_data.strftime("%Y-%m-%d %H:%M:%S") worksheet.write(row_index + 1, col_index, col_data)
關(guān)閉游標(biāo)、數(shù)據(jù)庫連接和Excel文件對象
在數(shù)據(jù)導(dǎo)出完成后,記得關(guān)閉游標(biāo)、數(shù)據(jù)庫連接和Excel文件對象,釋放資源。
cursor.close() connection.close() workbook.close()
總結(jié)
通過以上步驟,我們使用Python成功地將MySQL查詢結(jié)果導(dǎo)出到Excel文件中。這種方法不僅簡單方便,而且還可以輕松實現(xiàn)定制化的數(shù)據(jù)處理和格式化操作。
完整代碼
import pymysql import xlsxwriter import datetime # 建立數(shù)據(jù)庫連接 connection = pymysql.connect( host='localhost', user='root', password='123456', database='caiwu' ) # 編寫SQL查詢語句 query = "SELECT * FROM report_品名" # 創(chuàng)建Excel文件對象 workbook = xlsxwriter.Workbook('output2.xlsx') # 創(chuàng)建Excel工作表對象 worksheet = workbook.add_worksheet() # 創(chuàng)建游標(biāo)對象 cursor = connection.cursor() # 執(zhí)行SQL查詢 cursor.execute(query) # 獲取查詢結(jié)果的列名 column_names = [i[0] for i in cursor.description] # 將列名寫入Excel文件的第一行 for col_index, col_name in enumerate(column_names): worksheet.write(0, col_index, col_name) # 獲取查詢結(jié)果中的數(shù)據(jù) data = cursor.fetchall() # 將數(shù)據(jù)寫入Excel文件中 for row_index, row_data in enumerate(data): for col_index, col_data in enumerate(row_data): # 判斷數(shù)據(jù)類型是否為時間類型 if isinstance(col_data, datetime.datetime): col_data = col_data.strftime("%Y-%m-%d %H:%M:%S") # 將時間字段轉(zhuǎn)換為字符串 worksheet.write(row_index + 1, col_index, col_data) # 關(guān)閉游標(biāo)對象 cursor.close() # 關(guān)閉數(shù)據(jù)庫連接 connection.close() # 關(guān)閉Excel文件對象 workbook.close()
到此這篇關(guān)于詳解Python中xlsxwriter庫的基本操作的文章就介紹到這了,更多相關(guān)Python xlsxwriter庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django創(chuàng)建簡單的頁面響應(yīng)實例教程
這篇文章主要給大家介紹了關(guān)于django如何創(chuàng)建簡單的頁面響應(yīng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09淺析python打包工具distutils、setuptools
python包在開發(fā)中十分常見,一般的使用套路是所有的功能做一個python模塊包,打包模塊,然后發(fā)布,安裝使用。這篇文章給大家介紹了python打包工具distutils、setuptools的相關(guān)知識,感興趣的朋友一起看看吧2018-04-04python實現(xiàn)socket客戶端和服務(wù)端簡單示例
這篇文章主要介紹了python實現(xiàn)socket客戶端和服務(wù)端簡單示例,需要的朋友可以參考下2014-02-02python進(jìn)階教程之函數(shù)參數(shù)的多種傳遞方法
這篇文章主要介紹了python進(jìn)階教程之函數(shù)參數(shù)的多種傳遞方法,包括關(guān)鍵字傳遞、默認(rèn)值傳遞、包裹位置傳遞、包裹關(guān)鍵字混合傳遞等,需要的朋友可以參考下2014-08-08python機(jī)器學(xué)習(xí)基礎(chǔ)線性回歸與嶺回歸算法詳解
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)基礎(chǔ)線性回歸與嶺回歸算法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11PyQt實現(xiàn)異步數(shù)據(jù)庫請求的實戰(zhàn)記錄
開發(fā)軟件的時候不可避免要和數(shù)據(jù)庫發(fā)生交互,但是有些 SQL 請求非常耗時,如果在主線程中發(fā)送請求,可能會造成界面卡頓,本文將介紹一種讓數(shù)據(jù)庫請求變得和前端的 ajax 請求一樣簡單,希望對大家有所幫助2023-12-12