将Excel文件(xlsx)中的联系人和电话转换成vcard文件(.vcf),并用pyinstaller打包发布
将Excel文件(xlsx)中的联系人和电话转换成vcard文件(.vcf),并用pyinstaller打包发布
效果:
将一个Excel表格和该脚本放入同一个文件夹下,运行脚本,输入感兴趣的联系人所在行序号,直接生成vCard文件
步骤:
- 获取同文件夹下的绝对路径(用于pyinstaller打包)
- 读取绝对路径下的xlsx文件数据(要input的:联系人和电话所在列数,以及要输出的数据行数)
- 套用vcf格式,在绝对路径下写入vcf文件
坑很多:
- Mac上打的包在win上运行不成,这一点是改变不了的
- 获取绝对路径是一个很难的活,因为绝对路径要在打包后生效,开始我用filedir=file,在idle中可以获取到路径,打包后exe文件获取失败,最后在这位大神博客中找到了答案link
- 编一个程序很容易,编一个用户友好的程序很难,因为要考虑所有用后可能遇到的情况。。。
from openpyxl import load_workbook
import time
import os
import sysdef read_xlsx(path):''''''#return [[changed_name,phone_num],...] listexcel = load_workbook(path) #读表操作:# sheet_names = excel.get_sheet_names()#方法得到工作簿的所有工作表# print(sheet_names)table = excel.activeprint('将对如下sheet进行读取联系人:',table.title,'.如果有误请保存一下表格文件并重启该程序')result=[]while True:try:in_=input('请输入联系人姓名和电话所在列的数字,逗号分隔,回车确认')if ',' in in_:c_name,c_phone=in_.split(',')else:c_name,c_phone=in_.split(',')input_=input('请输入想要读取到手机的联系人起始和终止条目对应的行序号,以逗号分隔,回车确认')if ',' in input_:r_begin,r_end=input_.split(',')else:r_begin,r_end=input_.split(',')fuck=int(c_name)bitch=int(c_phone)begin=int(r_begin)end=int(r_end)breakexcept :print('输入错误,重新输入')#begin readtimes=end-begin+1for time in range(times):item=[]name=table.cell(begin+time,fuck)#行列时情况而定!!!!!!!!!!!!!name='%s'%str(begin+time)+name.valuephone=table.cell(begin+time,bitch).value#行列时情况而定!!!!!!!!!!!!!item.append(name)item.append(phone)result.append(item)return result,r_begin,r_enddef write2file(result,f_dir,begin='1',end='2'):#write result to f_dir/f=open('%s/联系人%s到%s.vcf'%(f_dir,begin,end),'w',encoding='utf-8')for item in result:name=item[0]num=item[1]stencil='BEGIN:VCARD\nVERSION:3.0\nFN:%s\nN:;%s;;;\nTEL;TYPE=VOICE,CELL,pref;VALUE=text:%s\nUID:69E7CCC1-7AC2-F741-865D-C9BDF3AA763F\nEND:VCARD\n'%(name,name,num)f.write(stencil)f.close()print('done!')time.sleep(5)def read_xlsx_name(abs_dir):#得到绝对路径里面的所有xlsx文件名列表【file1,file2...】gener=os.walk(abs_dir)try:self_=gener.__next__()except StopIteration:print(abs_dir)print(gener)input('读取路径错误')passobj_file=[]for f in self_[2]:if os.path.splitext(f)[1]=='.xlsx':obj_file.append(f)#处理._文件名.xlsx的情况def remove():for i in obj_file:##################################['~$test.xlsx', 'test.xlsx']if i[2:] in obj_file:obj_file.remove(i)#print('remove')remove()if len(obj_file) != 1:remove()if len(obj_file) != 1:print('该文件夹下没有表格文件或多于一个表格文件',obj_file)time.sleep(20)os._exit(0)return obj_file[0]if __name__=='__main__':#获得绝对路径abs_dir = os.path.dirname(os.path.realpath(sys.executable))#print(abs_dir,'--1')#获得同级文件夹内的xlsx文件名obj_file=read_xlsx_name(abs_dir)#print(obj_file)result = read_xlsx('%s/%s'%(abs_dir,obj_file))#input('result%s'%result[0][0][0])information=result[0]begin=result[1]end=result[2]#input('Now, let us write2file')write2file(information,abs_dir,begin,end)
好了,一个喜欢编程的非专业人员想要编一个程序刚开始真的很难,因为身边没有人可以讨论的。这些代码我断断续续写了三天。。。但是每当解决了一个bug带给我的喜悦真的是发自内心的。真后悔当初没进软件工程专业。佛不渡我人自渡,且行且行且珍惜吧。
将Excel文件(xlsx)中的联系人和电话转换成vcard文件(.vcf),并用pyinstaller打包发布相关推荐
- 如何使用Python语言将测量数据曲线动起来? matplotlib转换成 GIF文件
简 介: 本文就如何使用的Python中的Matplotlib绘制的图运动起来进行讨论.实际上是生成多个图片,将它们合成一个动图.编写了PlotGIF函数,将matplotlib绘制的图片存储,然后生 ...
- 利用Python批量将.dat文件转换成.csv文件
今天处理一些dat文件的时候,要进行批量转换成CSV文件,如果直接进行转换会遇到一行中有多个数据的问题,因此要进行替换,操作程序如下: import os import pandas as pdpat ...
- stata中超好用小命令:一键将excel文件转换成dta文件
xls2dta命令:将excel文件转换成dta文件 在stata应用中,往往需要对多个excel中的数据进行处理,这就需将excel格式的数据转化为stata格式的数据,通常的做法是读入(impor ...
- 将excel(xls/xlsx)转换成csv文件
将excel(xls/xlsx)转换成csv文件 首先pom.xml 需要引进的包如下: <dependency><groupId>net.sourceforge.jexcel ...
- 用Java将Excel的xls和xlsx文件转换成csv文件的方法, XLS2CSV, XLSX2CSV
利用poi将excel文件后缀为.xls .xlsx的文件转换成txt/csv文本文件 首先,引入所需的jar包: <dependencies>2 <dependency>3 ...
- Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数
Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数 文件夹中获取需要转换的文件数,将其全部转换或可单独转换单个文件,并获取转成PD ...
- node-js——将excel表格转换成json文件
文章目录 将excel表格转换成json文件 步骤 一.引用nodejs的xlsx模块,读取表格的数据 二.引入fs模块,创建文件并写入 三.写一个bat脚本,双击自动执行nodejs文件 示例文件下 ...
- Java实现从Excel文件转换成XML文件(一)
实现思路: 直接从Excel文件装换成XML文件是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取 ...
- word学习/word如何显示空格/LaTeX格式转为Word格式/ latex中的公式格式如何转换成word中的公式格式/excel复制到word表格过大超出
以windows的word365为例进行讲解,主要分为显示,公式,表格,图片,审阅以及写作方式(含Latex格式转换). 常用快捷键: f4: cmd + y 查找: cmd + shift + h ...
- Java使用aspse实现Excel文件转换成PDF文件
使用Java代码把Excel文件转换成PDF文件 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/ ...
最新文章
- Redhat Linux网卡配置与绑定
- 电路邱关源第五版pdf_硬件狗教你学电路【二】:电路分析方法
- Redis学习日记-05:SORT命令
- [习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)
- 高效的JavaScript.
- 最简单的git merge 和git rebase 介绍和示例演示
- Ubuntu下在Apache中运行Keystone
- [转载] 七龙珠第一部——第047话 发现龟仙屋
- 元胞自动机生命游戏C语言并行实现
- (7)机器学习之make_bolbs
- PHP调整网页,用PHP程序实现支持页面后退的两种方法
- java模拟器.apk_java游戏模拟器安卓版下载-java模拟器apk下载 v2.2.0 安卓版-IT猫扑网...
- 计算机网络安全员好就业吗,网络安全就业前景怎么样?
- mac word 复制自动产生书签
- VHDL中的行为描述、数据流(RTL)描述和结构描述
- 远程工具之一---rsync用法介绍
- android屏幕 录制检测,Android 录制屏幕的实现方法
- LogicFlow 边的绘制与交互
- Goto 桌面搜索 插件的使用
- 嵌入式面试_面试宝典整理(包括内核)