1、源码:先写一个界面出来,放需要放入的点击事件的函数

# -*- coding:utf-8 -*-
import Tkinter
from Tkinter import * import ExcleCount #定义点击事件
def butonck():
input_path = entry_input.get().strip() ExcleCount.excleCount_passenger(input_path) top = Tkinter.Tk()
# 标题
top.title("excel计数工具")
# 窗口大小 长高用小写x隔开
top.geometry("400x200")
# 窗口基于屏幕的坐标 +x轴+y轴
top.geometry("+500+200")
# input_dir_text = Entry(top) # 创建lab标签 填写文件的输入路径
label_input = Label(top, text="excle文件路径:", fg="red", font=("宋体", 12))
# 显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐
label_input.grid(row=0, column=0, padx=6, pady=10) # # 创建输入框,填写文件路径
entry_input = Entry(top, font=("宋体", 12)) # 显示输入框
entry_input.grid(row=0, column=1) # 创建lab标签 填写文件的输入路径
# label_out = Label(top, text="口岸文件路径:", fg="red", font=("宋体", 12))
# # 显示lab标签 网格布局 sticky=W #左对齐 E为右对齐 默认为中间对齐
# label_out.grid(row=1, column=0) # # 创建输入框,填写文件路径
# entry_out = Entry(top, font=("宋体", 12))
#
# # 显示输入框
# entry_out.grid(row=1, column=1) # 创建按钮
button = Button(top, text="确定", font=("宋体", 15), command=butonck)
# 显示按钮
button.grid(row=2, column=1, padx=6, pady=10)
# 进入消息循环
top.mainloop()

2、处理excle的某个功能函数

#!/usr/bin/env python
# -*- coding: utf-8 -*- import xlsxwriter
import os
import win32com.client as win32 def excleCount_passenger(file_path):
#定义输出的文件路径在原始文件的路径的同级目录新建一个outfile
file_list = []
out_file_path = os.path.join(os.path.abspath(os.path.dirname(file_path)+os.path.sep+"."), 'out_file')
if not os.path.exists(out_file_path):
os.makedirs(out_file_path)
for root, dirs, files in os.walk(file_path):
for name in files:
excle_file_name = os.path.join(file_path, os.path.join(root, name))
if name.endswith('.xls') or name.endswith('.xlsx'):
#print(excle_file_name)
file_list.append(excle_file_name) #打开excle excel = win32.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False xlBook = excel.Workbooks.Open(file_list[0])
sheetname = xlBook.Sheets(1).Name
# print ex sht = xlBook.Worksheets(sheetname) # sheet的行数
nrows = sht.UsedRange.Rows.Count # sheet的列数
ncols = sht.UsedRange.Columns.Count for j in range(1, ncols + 1):
if sht.Cells(1, j).Value == u'证件号码':
numOf = j set_data1 = set()
for i in range(2, nrows + 1): travel = sht.Cells(i, numOf).Value.decode('utf-8')
set_data1.add(travel)
print("set1",set_data1)
# xlBook 关闭读取excle进程
xlBook.Close(SaveChanges=1) # 关闭xlBook句柄 del excel # 这个地方很重要,杀死excel进程是这个地方起作用
# 打开excle excel = win32.Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False xlBook = excel.Workbooks.Open(file_list[1])
sheetname = xlBook.Sheets(1).Name
# print ex sht = xlBook.Worksheets(sheetname) # sheet的行数
nrows = sht.UsedRange.Rows.Count # sheet的列数
ncols = sht.UsedRange.Columns.Count
for j in range(1, ncols + 1):
if sht.Cells(1, j).Value == u'证件号码':
numOf = j set_data2 = set()
for i in range(2, nrows + 1):
# print(sht.Cells(i, 10).Value,type(sht.Cells(i, 10).Value))
# if isinstance(sht.Cells(i, 10).Value, unicode):
travel = sht.Cells(i, numOf).Value.decode('utf-8')
set_data2.add(travel)
#print("set2",set_data2)
# xlBook 关闭读取excle进程
xlBook.Close(SaveChanges=1) # 关闭xlBook句柄 del excel # 这个地方很重要,杀死excel进程是这个地方起作用 end_list = []
for i in set_data1:
for j in set_data2:
if i == j:
end_list.append(i)
#print(end_list) workbook = xlsxwriter.Workbook(os.path.join(out_file_path, 'out.xlsx'))
worksheet = workbook.add_worksheet('sheet1')
headings = [u'去重交集数据'] # 设置表头 data = [end_list]
worksheet.write_row('A1', headings)
worksheet.write_column('A2', data[0])
workbook.close()

3、打包代码

pyhton2.7
前提第三方库已经安装 pip install pyinstaller 打包的整个路径不能放中文
pyinstaller -i Excel.ico -w -D excelTool.py ExcleCount.py -p C:\Python27\Lib\site-packages

上面的Excel.ico是图标文件图片 —D 参数后面第一个跟界面主函数 -p 加上环境依赖的第三方包

基于python2.7 Tkinter 做一个小工具的更多相关文章

  1. 【开源一个小工具】一键将网页内容推送到Kindle

    最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...

  2. 使用PixiJS做一个小游戏

    PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...

  3. 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

  4. C# 基础知识系列- 17 实战篇 编写一个小工具(1)

    0. 前言 这是对C# 基础系列的一个总结,现在我们利用之前学到的知识做一个小小的工具来给我们使用. 如果有看过IO篇的小伙伴,应该有印象.当时我提过一个场景描述,我们在平时使用系统的时候,经常会为了 ...

  5. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  6. 提高Scrum站会效率的一个小工具

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:提高Scrum站会效率的一个小工具.

  7. Windows PE 第一章 熟悉OD(顺便破解一个小工具)

    熟悉OD(顺便破解一个小工具) 上一节了解了OD的简单使用,这次就练习下,目标是破解一款小软件(入门练手用的,没有壳什么的). 首先我们来看一下这个小软件: 我们的目的是输入任何字符串都可以成功注册, ...

  8. 想用Electron做个小工具?这个或许是终极版

    故事背景 之前在网上有看到很多小伙伴基于 electron 实现了非常多好用的桌面端工具,比如图床管理工具 PicGo,就专门做图床工具.也有一些其他的类似的小工具,比如 saladict-deskt ...

  9. 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建

    一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...

随机推荐

  1. stm32 connot enter debug mode

    dap 可以发现设备,stlink jlink 均无法发现设备,但是都不能下载.connot enter debug mode ,发现是vdda 未连接

  2. mongoTemplate 条件查询

    构建条件方法 @Override public Query getQuery(ReportParam param){ //check MeenoAssert.hasLength(param.getUu ...

  3. jpa写原生sql-EntityManager

    废话不多说 package com.meeno.trainsys.meeting.service; import com.google.common.collect.Lists; import com ...

  4. flutter添加启动图及设置启动时间

    首先贴个官方的设置方法,看这里:https://flutterchina.club/assets-and-images/#%E6%9B%B4%E6%96%B0%E5%90%AF%E5%8A%A8%E9 ...

  5. UDP与TCP的对比

    参考网址:https://blog.csdn.net/m0_38121874/article/details/82914634 1.报头(1)TCP协议报头TCP指传输控制协议,其报头格式如下: TC ...

  6. prism 的学习网站

    C#的学习网址: https://www.cnblogs.com/zh7791

  7. 【java文件处理】java项目路径下的文件下载处理

    1. controller类: package com.neo.controller; import javax.servlet.http.HttpServletResponse; import or ...

  8. 异步编程之EAP

    一.概述 前面我们了解到了APM编程模式,但APM不支持对异步操作的取消和没有提供对进度报告的功能. 对于界面程序来说,进度报告和取消操作的支持也是必不可少的,为了支持这些功能,微软在.NET 2.0 ...

  9. 设置Sublime插件快捷键--实现CSS颜色选取

    安装插件ColorPicker 如果你经常要查看或设置颜色值,这个插件可以很方便地调用你本机的调色板应用.(译者扩充:)这是一个双向的功能,你既可以在调色板中选择一个颜色,然后按"确定&qu ...

  10. flex布局中flex属性运用在随机发红包的算法上

    flex布局是现在前端基本上都会运用的一种布局,基本上用到比较多的是父元素设置display:flex,两个子元素,一个设置固定宽度,另一个设置为flex:1(这里都指flex-direction为r ...