Python实现xlsx转vcf实现手机号批量导入手机
美_难免总有些缺憾
2025年12月19日 12:01
收录于文集
共5篇

1.先在同目录下用代码把你的xlsx文件转化成vcf

要求:1. 文件名为test.xlsx

要求2:第一列为Name,第二列为Phone

后面的列删了

2.邮箱发送至网易邮箱,手机打开文件选择通讯录打开即可导入(其他方法自行测试)


import pandas as pd

import os def xlsx_to_vcf(excel_file, vcf_file):     # 自动使用脚本同目录     script_dir = os.path.dirname(os.path.abspath(__file__))     excel_path = os.path.join(script_dir, excel_file)     df = pd.read_excel(excel_path)     print("检测到的列名:", df.columns.tolist())     print("前5行数据预览:\n", df.head())     # 自动匹配常见姓名和电话列名     name_candidates = ['姓名', '名字', '联系人', 'Name', '姓名名称']     phone_candidates = ['电话', '手机', '手机号', '联系电话', '手机号码', 'Phone', 'TEL']     name_col = next((col for col in df.columns if col.strip()                     in name_candidates), df.columns[0])  # 默认第一列     phone_col = next((col for col in df.columns if col.strip(     ) in phone_candidates), df.columns[1] if len(df.columns) > 1 else None)     print(f"使用姓名列: {name_col}")     print(f"使用电话列: {phone_col}")     vcf_path = os.path.join(script_dir, vcf_file)     with open(vcf_path, 'w', encoding='utf-8') as f:         for _, row in df.iterrows():             f.write("BEGIN:VCARD\n")             f.write("VERSION:3.0\n")             # 姓名             name = str(row[name_col]).strip()             if name and name != 'nan':                 f.write(f"FN:{name}\n")                 f.write(f"N:{name};;;;\n")  # 结构化姓名(可选)             # 电话(清理空格、横杠)             if phone_col and phone_col in row:                 phone = str(row[phone_col]).strip().replace(                     ' ', '').replace('-', '')                 if phone and phone != 'nan':                     f.write(f"TEL;TYPE=CELL:{phone}\n")             f.write("END:VCARD\n")     print(f"成功生成 {len(df)} 个联系人 → {vcf_path}")     print("已自动去除多余的外层 VCARD,导入手机应该正常!") # 调用(改成你的实际文件名) xlsx_to_vcf('test.xlsx', 'test.vcf')