将自己的Access数据库通讯录导入手机通讯录

将自己的Access数据库通讯录导入手机通讯录

要换用儿子的Sony Ericsson K700手机。换手机本身没有什么,但让我最头痛的事情是换手机意味我原来手机里的几百个电话号码薄作废了,需要在新的手机里重新输入这几百个电话。在这 个问题上我一直对各手机开发厂商满肚子怨言,为什么不制定一个标准接口,让所有手机的电话号码薄能够相互传递,并能够传送到计算机上保存起来呢。但厂商为 了自身的利益坚决不这么做我也没有办法,就像手机生产厂商为了自己的利益坚决不把手机的充电器接口做成标准的接口一样让我么虽然不满,但毫不办法。
   
不过好在Sony Ericsson K700和我原来用的C网的Motorola V70老手机不一样,有红外接口,而我的手提也正好有红外接口。所以我想,不如借此机会,干脆花点时间和精力,看看能不能把我存在计算机上的Access 通讯录想办法传递到手机上去,这可能比仅仅抱怨手机制造厂商来得要实惠一些。
   
有了想法就开始动作,但动作起来的确遇到了很多困难,不过一步步总算基本解决,高兴之余,把操作步骤记录在此,以备以后需要时参考。
弄清手机电话薄格式
    首先需要弄清手机通讯录的文字格式。在手机电话薄上输入几个号码,然后利用红外接口传递到计算机上,Sony Ericsson传递过来的文件是后缀为.vcf的文件,利用记事本打开,可以看见如下的记录格式片断:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+kJONd2W5-
TEL;CELL:13909001143
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+kJOP3I 2F -
TEL;WORK:02887720508
TEL;HOME:02887721360
TEL;CELL:13608218098
END:VCARD
   
从文件可以看出,电话薄记录格式是VCARD格式的,而字符是UTF-7格式的。如果我们要把自己的Access电话薄导入到手机电话薄,我们需要首先从Access电话薄中的记录导出,并改写为上述格式的才行。
Access电话薄导出
    我的Access电话薄是用表记录的,包含了姓名,手机号,工作电话,家庭电话和其它的一些信息。利用Access的导出功能,我们可以将其导入到一个 Excel或者其它格式的文件中。考虑到前面的VCARD的格式要求,导出的Access表中绝对没有如BEGIN:VCARDVERSION:2.1 之类的专门标记,需要在导出的文件中添加这些标记,因此经权衡决定导出为Excel文件,在导出文件中,删除了其它不必要的列后,我们可以添加相应的列, 并在列中添加VCARD中需要的特定标志,如下所示:

VERSION:2.1

N;CHARSET=UTF-7:;

阿桑

TEL;WORK:

08376226485

TEL;HOME:

08376223763

TEL;CELL:

13909042632

END:VCARD

VERSION:2.1

N;CHARSET=UTF-7:;

白文玉

TEL;WORK:

 

TEL;HOME:

02887776976

TEL;CELL:

13980029620

END:VCARD

VERSION:2.1

N;CHARSET=UTF-7:;

班运翔

TEL;WORK:

02884761968

TEL;HOME:

02884761252

TEL;CELL:

13658000925

END:VCARD

VERSION:2.1

N;CHARSET=UTF-7:;

蔡畅韬

TEL;WORK:

02887720504

TEL;HOME:

02886134508

TEL;CELL:

028-89077210

END:VCARD

VERSION:2.1

N;CHARSET=UTF-7:;

蔡乐才

TEL;WORK:

 

TEL;HOME:

3930191

TEL;CELL:

13508170118

END:VCARD

VERSION:2.1

N;CHARSET=UTF-7:;

陈建

TEL;WORK:

 

TEL;HOME:

 

TEL;CELL:

13309006598

END:VCARD

    添加特定标志的时候,最好直接从传递过来的vcf文件中拷贝相应的标志字符串以保证其正确性。
   
之后,利用Excel的另存为命令,把文件另存为一个Unicode的文本文件,为进一步的格式转换做好准备。
格式的转换
    生成的Unicode文本文件格式如下:
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;    阿桑    TEL;WORK:    08376226485    TEL;HOME:    08376223763    TEL;CELL:    13909042632    END:VCARD
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;   
白文玉    TEL;WORK:        TEL;HOME:    02887776976    TEL;CELL:    13980029620    END:VCARD
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;   
班运翔    TEL;WORK:    02884761968    TEL;HOME:    02884761252    TEL;CELL:    13658000925    END:VCARD
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;   
蔡畅韬    TEL;WORK:    02887720504    TEL;HOME:    02886134508    TEL;CELL:    028-89077210    END:VCARD
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;   
蔡乐才    TEL;WORK:        TEL;HOME:    3930191    TEL;CELL:    13508170118    END:VCARD
BEGIN:VCARD    VERSION:2.1    N;CHARSET=UTF-7:;   
陈建    TEL;WORK:        TEL;HOME:        TEL;CELL:    13309006598    END:VCARD
    利用Word打开生成的Unicode文本文件进行进一步格式转换。用Word是必须的。因为我们必须按照规定实现在规定的地方换行,同时,文件中的中文等字符实际并不是UTF-7字符格式,我们必须对其进行转换才能让手机识别,这些利用Word能够比较方便地完成。
   
首先利用Word的替换功能在应该进行回车的地方添加回车,如将“BEGIN:VCARD    ”替换为“BEGIN:VCARD^l”,把“    TEL;WORK:    “”替换为“^lTEL;WORK:“”等。这里需要注意的是,在替换“ N;CHARSET=UTF-7:;    ”时应该在后面保留一个空格,这对后面的UTF编码转换会带来某种方便。
   
替换后的文本如下所示:

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
阿桑
TEL;WORK:08376226485
TEL;HOME:08376223763
TEL;CELL:13909042632
END:VCARD

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
白文玉
TEL;WORK:
TEL;HOME:02887776976
TEL;CELL:13980029620
END:VCARD

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;
班运翔
TEL;WORK:02884761968
TEL;HOME:02884761252
TEL;CELL:13658000925
END:VCARD

     接着,注意立即利用替换删除掉没有号码存在的各项电话号码,即删除后面紧跟软回车的在标志字符“WORK:^l""HOME:^l”“CELL:^l”,以保证生成号码的正确性。
   
之后,利用另存为命令重新保存该文件为扩展名为.vcf的文本文件,确定后,Word将会提问保存文本的格式,这里,注意选择“UTF -7” 格式,让Word对如姓名这样的中文字符按照UTF-7格式进行转换。
   
生成的文件如下:
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +lj9oUQ-
TEL+ADs-WORK:08376226485
TEL+ADs-HOME:08376223763
TEL+ADs-CELL:13909042632
END:VCARD
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +dn1lh3OJ-
TEL+ADs-HOME:02887776976
TEL+ADs-CELL:13980029620
END:VCARD
BEGIN:VCARD
VERSION:2.1
N+ADs-CHARSET+AD0-UTF-7:+ADs- +c+2P0H/U-
TEL+ADs-WORK:02884761968
TEL+ADs-HOME:02884761252
TEL+ADs-CELL:13658000925
END:VCARD
   
利用记事本打开上述文件。观察一下变换的文件,我们可以看到,Word除了将名字这样的中文字符进行了UTF-7转换以外,对;等字符也进行了相应的转 换,使标志字符串和应有的格式不符,如标志串“N;CHARSET=UTF-7:;”被替换为“N+ADs-CHARSET+AD0-UTF-7:+ ADs- ”。我们知道,UTF-7字符格式对需要转换的字符包含在“+”“-”号之间。这里,我们保留对中文名字的转换,而应将标志字符串“N;CHARSET =UTF-7:;”“TEL;”替换回来。应该注意的是,如果我们在前一步Word中的替换中不在中文名字前保留一个空格,则中文名字不会但与的包含在 一个“+”“-”对之间,而是标志字符串“N+ADs-CHARSET+AD0-UTF-7:+ADs-”融合在一起,成为“N+ADs- CHARSET+AD0-UTF-7:+ADs-dn1lh3OJ”这样的形式,我们则容易替换错误,破坏名字的UTF-7转换产生相应的问题,所以在 Word替换中在中文名字前保留一个空格是明智的。
   
替换完成后的文件如下:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+lj9oUQ-
TEL;WORK:08376226485
TEL;HOME:08376223763
TEL;CELL:13909042632
END:VCARD
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-7:;+dn1lh3OJ-
TEL;HOME:02887776976
TEL;CELL:13980029620
END:VCARD
   
保存文件,然后将其发送到手机电话薄,哈哈,大功告成!!!
几句零碎
    Sony Ericsson K700的电话薄容量显示其有510个电话号码。但传送过后才发现,实际我只传送了213个联系人,但已经显示占用了300多个记录,看来这个容量计算有吹牛的成分,估计应该是把每个电话都算着一个条目吧。
   
另外奇怪的是,我想一次把213个联系人传送到手机是不可能的,因为它只会传送一部分。我只能分两次才完全将213个联系人传送到了我的Sony Ericcsion K700上。
   
捣鼓这个玩意,花费了我好几个小时的时间,痛苦。不过与将几百个人输入到手机中比较起来,我还是非常满意的。我想,以后如果再需要向手机发送我数据库中的 联系人,我用不了这么多时间的。实际现在我全过程地走一遍从数据库传送通讯录到Sony Ericcsion K700中,只需要大约10多分钟的时间,这是值得高兴的。

 
源代码见:http://download.csdn.net/source/3026894 本程序于2008年5月采用VB6.0+access编写完成,为帮弟弟做毕业设计而完成的,同时自己使用的1年多,发现非常实用,现在决定上传网上与大家共共享。先上传可执行程序,欢迎大家使用,如有意见请发邮件到 shumo04@163.com 下面是程序功能的简单介绍。 “联系人信息管理系统”力求更加精简和全面的联系人(亲戚、同学、朋友等)的信息,方便用户整理与存储联系人的信息、查询联系人信息以及查询满足某些特征要求的联系人,提高效率。另外,存储用户曾经和朋友一起参与的活动的时间、地点、重要经历等;以及朋友们的一些重要经历,帮助用户记忆信息,从而在有需要时用户能够方便的寻求适当的朋友、同学等联系人的帮助。最后,如果时间允许还增加重要事情提醒功能,如朋友生日,提示很久没联系的同学信息等,从而使用户能够建立良好的人际关系。实现了从Excel读取联系人信息以及将联系人主要信息保存到Excel文件。 功能模块: 1,联系人信息 1.1 新增联系人 1.2 批量增加联系人(Excel导入) 1.3 联系人信息修改 1.4 联系人分组信息管理 2, 联系人经历 2.1 新增求学经历 2.2 新增工作经历 2.3 新增活动经历 2.4 修改活动经历 3, 查询 3.1 联系人基本信息查询 3.2 活动经历查询 3.3 综合查询 3.4 联系人信息输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值