运行界面效果图
ch
# -*- encoding:utf-8 -*-
import tkinter.filedialog
from tkinter import *
import os
import win32con
import win32ui
from openpyxl import load_workbook
import xlwt
import win32api
from concurrent.futures import ThreadPoolExecutor
def year_Execl(number1, number2): # 年度主要商品排名
xp_lit = ['主要商品', '金额(万元)']
savapath = f'{number1}.xls' # 或者输出文件的名称
date = load_workbook(number2) # 调用openpxl 模板生成对象
sheet_list = date.worksheets # 获得所有的sheet
sheet_value = []
for i in range(len(sheet_list)):
sheet_value += list(sheet_list[i].values)[1:] # 以列表的形式获得第一个除标题以外的所有数据
zbp_list = year_list(sheet_value)
# print(zbp_list)# 调用方法函数获取符合条件的数据
workbook = xlwt.Workbook(encoding='utf-8') # 调用方法函数获取符合条件的数据
sheet_lable = workbook.add_sheet('年度主要商品排名.xlsx')
style = xlwt.XFStyle() # 定义单元格的格式
al = xlwt.Alignment()
al.horz = xlwt.Alignment.HORZ_CENTER
al.vert = xlwt.Alignment.VERT_CENTER
style.alignment = al
font = xlwt.Font()
font.bold = True
font.height = 12 * 20
font.name = "SimSun"
style.font = font
sheet_lable.write_merge(0, 0, 0, 1, "2023年", style) # 写入年份
for i, u in enumerate(xp_lit): # 写入标题
sheet_lable.write(1, i, u, style)
all_key = zbp_list
zj = 0
for zj_list in range(len(zbp_list)):
zj += zbp_list[zj_list][1]
zbp_list.append(('总计', zj))
for u in range(len(zbp_list)):
sheet_lable.write(u + 2, 0, zbp_list[u][0]) # 写入主要商品名称
sheet_lable.write(u + 2, 1, zbp_list[u][1] / 10000) # 写入主要商品价格
workbook.save(savapath) # 保存数据
win32api.MessageBox(0, f"已按要求整理完毕,文件输出路劲是:{savapath} \n共整理出{len(all_key)}条数据", "提示",
win32con.MB_OK) # 保存后的提示
open_file2.set(savapath)
def year_list(name): # 年度主要商品排名----或者符合条件的数据
pm_list = []
fh_list = []
txj = 0
dic_list = {}
for mysql in name:
fh_list.append(list(mysql))
########for i in range(len(fh_list)): # 更改47列为空属性的值
for i in range(len(fh_list)):
if fh_list[i][47] is None:
fh_list[i][47] = fh_list[i][58]
for i in range(len(fh_list)): # 提取第47列的值
pm_list.append(fh_list[i][47])
list_pm = set(pm_list)
for o in list_pm:
for i in range(len(fh_list)): # 判断47列和36列的值是否为None
if fh_list[i][47] is o:
if fh_list[i][46] is None:
continue
elif fh_list[i][36] is None:
continue
else:
lk = fh_list[i][36] * fh_list[i][46]
txj += lk
dic_list[o] = txj
txj = 0
all_list = sorted(dic_list.items(), key=lambda x: x[1], reverse=True)[:6]
return all_list
#####################
def trade_Volume(number1, number2): #
zbp_name = ['RBDFFN