
一.項目背景
本項目主要是想給大家介紹一下如何利用數(shù)據(jù)表(SQL)對已經(jīng)給定Excel模板對數(shù)據(jù)
進行處理統(tǒng)計,主要是涉及一些單元格的操作,也同時給大家介紹下如何利用openpyxl來
繪制圖形,本次數(shù)據(jù)表和給定Excel模板如下圖所示。

數(shù)據(jù)表

Excel模板文件
二.實現(xiàn)過程
1.數(shù)據(jù)準備
》》初始化連接
》》初始化文本
#初始化
class emp_xlsx():
def __init__(self, host, user, password, database):
#初始化連接信息
self.conn = pymysql.connect(host=host,
user=user,
password=password,
database=database
)
#初始化模板文件
self.wb = load_workbook('./temp.xlsx')
#獲取sheet頁簽
self.ws = self.wb.active
#頁簽名
self.ws.title = '員工薪資統(tǒng)計'
#頁簽顏色屬性
self.ws.sheet_properties.tabColor = 'ff0000'
2.獲取數(shù)據(jù)
》》執(zhí)行sql語句
def export_xlsx(self):
#建立連接
cursor=self.conn.cursor()
try:
#執(zhí)行sql語句(如果數(shù)據(jù)量大,需要借助于分頁查詢)
cursor.execute('select eno,name,salary from emp')
#獲取數(shù)據(jù)
rows=cursor.fetchall()
except Exception as e:
print(e)
2.獲取數(shù)據(jù)
》》執(zhí)行sql語句
def export_xlsx(self):
#建立連接
cursor=self.conn.cursor()
try:
#執(zhí)行sql語句(如果數(shù)據(jù)量大,需要借助于分頁查詢)
cursor.execute('select eno,name,salary from emp')
#獲取數(shù)據(jù)
rows=cursor.fetchall()
except Exception as e:
print(e)
3.存儲數(shù)據(jù)
》》設置屬性
》》保存圖表
#寫入行號id
row_id = 13
#遍歷每行數(shù)據(jù)
for (i,row) in enumerate(rows):
(self.ws['B{0}'.format(row_id)],
self.ws['C{0}'.format(row_id)],
self.ws['D{0}'.format(row_id)])=row
row_id += 1
#顯示圖表
chart = BarChart()
#設置圖表名稱
chart.title = "薪資統(tǒng)計表"
#設置顯示風格
chart.style = 16
#設置x軸坐標軸名稱
chart.x_axis.title = '姓名'
#設置y軸坐標軸名稱
chart.y_axis.title = '薪資'
#橫坐標
cats = Reference(self.ws, min_col=3, min_row=13, max_row=row_id)
#數(shù)據(jù)區(qū)域
data = Reference(self.ws, min_col=4, min_row=12, max_row=row_id)
#添加數(shù)據(jù)
chart.add_data(data, titles_from_data=True)
#添加屬性
chart.set_categories(cats)
#添加圖表
self.ws.add_chart(chart, "A{0}".format(row_id + 2))
#保存數(shù)據(jù)
self.wb.save('./emp.xlsx')

結(jié)果文件
三.完整代碼
import pymysql
from openpyxl import load_workbook
from openpyxl.chart import BarChart, Reference
#初始化
class emp_xlsx():
def __init__(self, host, user, password, database):
#初始化連接信息
self.conn = pymysql.connect(host=host,
user=user,
password=password,
database=database
)
#初始化模板文件
self.wb = load_workbook('./temp.xlsx')
#獲取sheet頁簽
self.ws = self.wb.active
#頁簽名
self.ws.title = '員工薪資統(tǒng)計'
#頁簽顏色屬性
self.ws.sheet_properties.tabColor = 'ff0000'
#導出數(shù)據(jù)
def export_xlsx(self):
#建立連接
cursor=self.conn.cursor()
try:
#執(zhí)行sql語句(如果數(shù)據(jù)量大,需要借助于分頁查詢)
cursor.execute('select eno,name,salary from emp')
#獲取數(shù)據(jù)
rows=cursor.fetchall()
except Exception as e:
print(e)
#寫入行號id
row_id = 13
#遍歷每行數(shù)據(jù)
for (i,row) in enumerate(rows):
(self.ws['B{0}'.format(row_id)],
self.ws['C{0}'.format(row_id)],
self.ws['D{0}'.format(row_id)])=row
row_id += 1
#顯示圖表
chart = BarChart()
#設置圖表名稱
chart.title = "薪資統(tǒng)計表"
#設置顯示風格
chart.style = 16
#設置x軸坐標軸名稱
chart.x_axis.title = '姓名'
#設置y軸坐標軸名稱
chart.y_axis.title = '薪資'
#橫坐標
cats = Reference(self.ws, min_col=3, min_row=13, max_row=row_id)
#數(shù)據(jù)區(qū)域
data = Reference(self.ws, min_col=4, min_row=12, max_row=row_id)
#添加數(shù)據(jù)
chart.add_data(data, titles_from_data=True)
#添加屬性
chart.set_categories(cats)
#添加圖表
self.ws.add_chart(chart, "A{0}".format(row_id + 2))
#保存數(shù)據(jù)
self.wb.save('./emp.xlsx')
#初始化連接
new_mysql=emp_xlsx('127.0.0.1',
'root',
'253611',
'company')
#導出數(shù)據(jù)
new_mysql.export_xlsx()
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7231瀏覽量
90616 -
Excel
+關(guān)注
關(guān)注
4文章
225瀏覽量
56201 -
數(shù)據(jù)表
+關(guān)注
關(guān)注
0文章
299瀏覽量
11667
發(fā)布評論請先 登錄
相關(guān)推薦
XY圖數(shù)據(jù)統(tǒng)計-以長度為X軸來進行統(tǒng)計
和標準差統(tǒng)計,在統(tǒng)計中只能輸入一個一維數(shù)組或者是波形數(shù)據(jù),這都不能把長度數(shù)據(jù)給統(tǒng)計進去,波形數(shù)據(jù)
發(fā)表于 06-11 11:07
實現(xiàn) Labview 和SQL server進行數(shù)據(jù)的讀取和寫入
行數(shù)據(jù)不變。現(xiàn)在實現(xiàn)了 Labview 和SQL server進行數(shù)據(jù)的讀取和寫入,但怎樣選中某行,顏色變深,以及怎樣保存數(shù)據(jù)進入該行,有請高人指點,有案例更好,謝謝
發(fā)表于 09-07 09:25
【EXCEL實時寫入】掃描EXCEL已有數(shù)據(jù)的行數(shù)并插入數(shù)據(jù)
本帖最后由 hg110429 于 2021-8-20 14:40 編輯
之前發(fā)現(xiàn)很多同學都在問,如何掃描Excel表內(nèi)數(shù)據(jù)的行數(shù),然后在已有數(shù)據(jù)下方
發(fā)表于 08-20 14:37
單片機串口顯示正常,為什么數(shù)據(jù)統(tǒng)計的數(shù)量少兩位呢?
單片機串口顯示正常,為什么數(shù)據(jù)統(tǒng)計的數(shù)量少兩位呢
發(fā)表于 10-25 06:34
Excel進行電路統(tǒng)計分析
摘要:本文向廣大電路設計人員介紹了一種利用Excel電子表對電路進行全面的統(tǒng)計分析的簡單方法,幾乎適用于任何電路。本文介紹的方法對于深入了解電路在實際環(huán)境中的運行情況
發(fā)表于 01-22 15:06
?2113次閱讀

數(shù)據(jù)分析、數(shù)據(jù)挖掘和數(shù)據(jù)統(tǒng)計的概念與主要區(qū)別及其舉例分析
數(shù)據(jù)挖掘就是從海量數(shù)據(jù)中找到隱藏的規(guī)則,數(shù)據(jù)分析一般要分析的目標比較明確,數(shù)據(jù)統(tǒng)計則是單純的使用樣本來推斷總體。 主要區(qū)別: 數(shù)據(jù)分析的重點
發(fā)表于 09-28 19:20
?18次下載
睡眠節(jié)律數(shù)據(jù)統(tǒng)計分析系統(tǒng)的設計
為了解決睡眠節(jié)律研究中數(shù)據(jù)的快速導入、準確分析和詳細統(tǒng)計的問題,提出了一種睡眠節(jié)律數(shù)據(jù)統(tǒng)計分析系統(tǒng)。該系統(tǒng)基于.NET開發(fā)平臺,以Oracle為后臺數(shù)據(jù)庫,采用B/S結(jié)構(gòu)模式,分為
發(fā)表于 11-15 16:22
?8次下載

統(tǒng)計java代碼行數(shù)和jar包中.class代碼的行數(shù)
本文檔內(nèi)容介紹了統(tǒng)計java代碼行數(shù)和jar包中.class代碼的行數(shù),供參考
發(fā)表于 03-19 15:27
?0次下載
使用MATLAB進行數(shù)理統(tǒng)計的程序免費下載
本文檔的主要內(nèi)容詳細介紹的是使用MATLAB進行數(shù)理統(tǒng)計的程序免費下載。
發(fā)表于 08-30 17:28
?6次下載
如何利用ZWS云平臺的自定義統(tǒng)計算法對數(shù)據(jù)進行統(tǒng)計?
設備數(shù)據(jù)上云,解析后的設備數(shù)據(jù)一般是時序存儲,但純粹的設備時序數(shù)據(jù)無法給用戶帶來更大的業(yè)務價值,需要根據(jù)業(yè)務需求進行額外的數(shù)據(jù)統(tǒng)計分析。

【產(chǎn)品應用】如何利用IoT云平臺統(tǒng)計設備數(shù)據(jù)?— 進階篇
。應用場景上一篇《如何利用IoT云平臺統(tǒng)計設備數(shù)據(jù)?—基礎(chǔ)篇》介紹了如何運用ZWS云平臺中的內(nèi)置統(tǒng)計算法進行數(shù)據(jù)統(tǒng)計,這次將介紹如何創(chuàng)建自定義統(tǒng)計

如何使用SQL進行數(shù)據(jù)分析
使用SQL進行數(shù)據(jù)分析是一個強大且靈活的過程,它涉及從數(shù)據(jù)庫中提取、清洗、轉(zhuǎn)換和聚合數(shù)據(jù),以便進行進一步的分析和洞察。 1.
評論