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. java中sort方法的自定义比较器写法(转载)

    java中sort方法的自定义比较器写法 摘要 在做一些算法题时常常会需要对数组.自定义对象.集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collecti ...

  2. Spring Boot 配置中的敏感信息如何保护?

    在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用.随机数的应用.命令行参数的使用.多环境的配置管理等等. 这些配置相关的知识都是Sprin ...

  3. 第7篇-为Java方法创建栈帧

    在 第6篇-Java方法新栈帧的创建 介绍过局部变量表的创建,创建完成后的栈帧状态如下图所示. 各个寄存器的状态如下所示. // %rax寄存器中存储的是返回地址 rax: return addres ...

  4. Golang语言系列-18-Gin框架博客项目

    代码托管在码云: https://gitee.com/lichengguo/my-blog-golang

  5. 服务启动shell脚本

    #!/bin/sh JarDir=`pwd` do_start() { echo "pandora-login start ..." nohup java -jar -Xmn256 ...

  6. Mysql报错注入之floor报错详解

    一.简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor ...

  7. 如何修改leaflet的marker图标

    1. 从官网中查看对应文档:https://leafletjs.com/ 2. 3. var greenIcon = L.icon({ iconUrl: 'leaf-green.png', shado ...

  8. UWP AppConnection.

    https://www.cnblogs.com/manupstairs/p/14582794.html

  9. SpringBoot2.0整合Quartz定时任务(持久化到数据库,更为简单的方式)

    1. pom文件添加依赖 <dependencies> <dependency> <groupId>org.springframework.boot</gro ...

  10. CSS定位(慕课网学习笔记)

    定位模型 static自然模型 relative相对定位模型 absolute绝对定位模型 fixed固定定位模型 sticky磁铁定位模型 possition之static(默认的设置)(静态定位. ...