2021-02-23 调用excel数据,修改单元格格式,并用tkinter制作图片浏览器直观查看

本文介绍了一种使用Python自动化处理Excel数据,包括筛选、样式调整和生成图表截图的方法。通过tkinter创建图形界面,用户可以输入条件查询数据,程序将从Excel中读取数据并进行展示。此外,还涉及了剪贴板管理和错误处理,确保截图流程的顺畅。最终,程序会按日期和输入条件保存图片。
摘要由CSDN通过智能技术生成

前言

女朋友这两天提了个需求,需要从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 = 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值