日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Excel实现报表

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Excel实现报表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用知識點

使用python創建、保存excel
設置表單、插入文字等
設置文字顏色,合并單元格等
excel數據讀取、轉換操作
python的with用法
mysql數據庫

實現功能

插入圖表并實現報表

with用法

def open_file():""" 使用with語法打開一個文件 """try:f = open('./static/test.txt', 'r', encoding='utf-8')rest = f.read()print(rest)except:passfinally:f.close()# with open('./static/test.txt', 'r', encoding='utf-8') as f:# rest = f.read()# print(rest)if __name__ == '__main__':open_file()

操作Excel

from datetime import datetime import MySQLdbfrom openpyxl import Workbook, load_workbook from openpyxl.drawing.image import Image from openpyxl.styles import Font, colorsclass ExcelUtils(object):"""pip install openpyxlpip install pillow"""def __init__(self):self.wb = Workbook()self.ws = self.wb.activeself.ws_two = self.wb.create_sheet('我的表單')self.ws.title = '你的表單'self.ws.sheet_properties.tabColor = 'ff0000'self.ws_three = self.wb.create_sheet()def do_sth(self):# 插入數據self.ws['A1'] = 66self.ws['A2'] = '你好'self.ws['A3'] = datetime.now()for row in self.ws_two['A1:E5']:for cell in row:cell.value = 2# 對數據進行求和self.ws_two['G1'] = '=SUM(A1:E1)'# 設置文字font = Font(sz=18, color=colors.RED)self.ws['A2'].font = font# 插入圖片# img = Image('./static/temp.jpg')# self.ws.add_image(img, 'B1')self.ws.merge_cells('A4:E5')self.ws.unmerge_cells('A4:E5')self.wb.save('./static/test.xlsx')def read_xls(self):"""讀取excel數據:return:"""ws = load_workbook('./static/template.xlsx')names = ws.get_sheet_names()print(names)conn = self.get_conn()wb = ws.activewb = ws[names[0]]for (i, row) in enumerate(wb.rows):if i < 2:continueyear = wb['A{0}'.format(i + 1)].valuemax = wb['B{0}'.format(i + 1)].valueavg = wb['C{0}'.format(i + 1)].valueprint(year)if year is None:continuecursor = conn.cursor()sql = 'INSERT INTO `score`(`year`, `max`, `avg`) VALUES({year}, {max}, {avg})'.format(year=year, max=max, avg=avg)print(sql)cursor.execute(sql)conn.autocommit(True)# print(conn)def get_conn(self):""" 獲取mysql 的連接 """try:conn = MySQLdb.connect(db='user_grade',host='localhost',user='root',password='',charset='utf8')except:passreturn conndef export_xls(self):""" 從mysql數據庫導出數據到excel """# 獲取數據庫的連接conn = self.get_conn()cursor = conn.cursor()# 準備查詢語句 (如果數據量大,需要借助于分頁查詢)sql = 'SELECT `year`, `max`, `avg` FROM `score`'# 查詢數據cursor.execute(sql)rows = cursor.fetchall()# 循環寫入到excelwb = Workbook()ws = wb.activefor (i, row) in enumerate(rows):print(row)(ws['A{0}'.format(i+1)],ws['B{0}'.format(i+1)],ws['C{0}'.format(i+1)]) = row# 保存excelwb.save('./static/export.xlsx')if __name__ == '__main__':client = ExcelUtils()# client.do_sth()client.read_xls()# client.export_xls()

py+mysql圖表實戰

import MySQLdb from openpyxl import load_workbook from openpyxl.chart import AreaChart, Referenceclass GaokaoExport(object):def __init__(self):self.wb = load_workbook('./static/tmpl.xlsx')self.ws = self.wb.activeself.ws.title = '成績統計'self.ws.sheet_properties.tabColor = 'ff0000'def get_conn(self):""" 獲取mysql 的連接 """try:conn = MySQLdb.connect(db='user_grade',host='localhost',user='root',password='',charset='utf8')except:passreturn conndef export_data(self):# 獲取數據庫的連接conn = self.get_conn()cursor = conn.cursor()# 準備查詢語句 (如果數據量大,需要借助于分頁查詢)sql = 'SELECT `year`, `max`, `avg` FROM `score`'# 查詢數據cursor.execute(sql)rows = cursor.fetchall()# 循環寫入到excelrow_id = 10for (i, row) in enumerate(rows):print(row)(self.ws['C{0}'.format(row_id)],self.ws['D{0}'.format(row_id)],self.ws['E{0}'.format(row_id)]) = rowrow_id += 1# 顯示圖表chart = AreaChart()chart.title = "統計表"chart.style = 13chart.x_axis.title = '年份'chart.y_axis.title = '分數'# 橫坐標cats = Reference(self.ws, min_col=3, min_row=10, max_row=row_id)# 數據區域data = Reference(self.ws, min_col=4, min_row=9, max_col=5, max_row=row_id)chart.add_data(data, titles_from_data=True)chart.set_categories(cats)self.ws.add_chart(chart, "A{0}".format(row_id+2))# 保存excelself.wb.save('./static/stats.xlsx')if __name__ == '__main__':client = GaokaoExport()client.export_data()

總結

以上是生活随笔為你收集整理的Excel实现报表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。