前言
女朋友这两天提了个需求,需要从mysql调数据生成图表,并直观显示图片可供截图,有需求就要满足,并且这次因为代码不是写给自己看的,所以要美观整洁,打好注释
从mysql调数据的代码她自己写了,我这里就用一张excel表来代替,到时候只要她自己改,调用就可以了
代码
import xlwings as xw
from PIL import ImageGrab,ImageTk
from tkinter import *
from tkinter import messagebox
from tkinter.ttk import * # 界面美化
from PIL import Image # 调用顺序不可提前,否则下方Image.open会识别为tkinter中的image
import os
import pandas as pd
import datetime
import time
#======================================== 获取excel数据,并导入新的工作表中 =====================================
def get_data():
df = pd.read_excel('data.xlsx',sheet_name='Sheet1') # 读取excel表数据,生成dataframe
df_entry = df[df['来源分区'].isin([name_entry.get()])] # 用isin函数筛选输入框内来源分区的数据
df_empty = df[df['来源分区'].isin(["不存在"])] # 定义一个空df表,用于判定df_entry获得的数据是否存在
global empty # 声明empty为全局变量,用于判定后续函数是否执行
if df_entry.equals(df_empty): # 如果df_entry获得的数据为不存在,给empty变量赋值为1
empty = 1
else: # 如果df_entry获得的数据存在,执行导出df表到excel,并给empty变量赋值为0
df_entry.to_excel(path, index=False)
empty = 0
#===============================================================================================================
#============================================ 更改表格样式 =======================================================
def form_style():
app = xw.App(visible=False, add_book=False) # 打开excel程序
wb = app.books.open(path) # 打开需要的工作簿
sht = wb.sheets[0] # 定位工作表
k = 17 # 每隔15条数据插入一行,用于后方代码复制列索引
while k <= sht.used_range.last_cell.row:
sht.api.Rows(k).Insert()
k += 16
max_row = sht.used_range.last_cell.row # 获取表格最大行数
max_column = sht.used_range.last_cell.column # 获取表格最大列数
sht.used_range.autofit() # 所有单元格自适应列宽行高
sht.used_range.api.HorizontalAlignment = -4108 # 将所有单元格格式设置为水平居中
sht.used_range.api.Font.Name = "Microsoft YaHei"
sht.range(1, 1).expand('right').color =