将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 sys
def read_xlsx(path):
''''''
#return [[changed_name,phone_num],...] list
excel = load_workbook(path)
#读表操作:
# sheet_names = excel.get_sheet_names()#方法得到工作簿的所有工作表
# print(sheet_names)
table = excel.active
print('将对如下sheet进行读取联系人:',table.title,'.如果有误请保存一下表格文件并重启该程序')
result=[]
while True:
try:
in_=input('请输入联系人姓名和电话所在列的数字,逗号分隔,回车确认')
if ',' in in_:
c_name,c_phone=in_.split(',')
else:
c_name,c_phone=in_.spl