从OUTLOOK到联想i966的电话簿导入

新年了,给自己买一个礼物,奖励一下自己一年辛勤的劳动 。
I966还是一部不错的电话,用了一天,感觉到了国产电子产品在不断的进步 。原来我用的是Nokia6021,我有463个联系人共计1000多个电话号码、电子邮件和地址等信息 。要全部导在新的电话中也是一件需要动脑筋的工作 。
Nokia有PC套件,所有的电话簿都会同步在Outlook中 。
第一步,我先把所有的Outlook联系人选择导出成Windows以逗号分隔的CSV文件 。这实际上是一种文本文件 。
第二步,用EXCEL打开这个导出的文件,把第一行编辑成这10列:
---------------------------------------------------------------------
姓名,群组,移动电话,家庭电话,商务电话,传真,其它电话,电子邮件,地址,备注
---------------------------------------------------------------------
这时候,会发现所有长的电话号码都变成了指数表示方式,如“139 E8”,需要把这些列进行单元格式转换变为“数值”,然后再把所有的单元格转换为“文本” 。注意:这样会有一个结果,区号前面的0会被去掉,需要手工补回!
第三步,这是是大量的手工调整工作 。因为OUTLOOK转换出来的文件有几十个字段,而联想格式只有10个列 。先去掉没有用的空字段,然后把其他各个栏目的内容分别移动到对应的新的列中 。注意在同一行中移动,以免把电话号安错人 。这样直到整个表只有上述10列为止 。
第四步,把EXCEL另存为CSV格式文件,然后用文本编辑器打开,推荐用UltraEdit32编辑 。首先全局把所有的双引号替换为什么都没有(不是空格),然后保存 。
【从OUTLOOK到联想i966的电话簿导入】第五步,转换成联想格式的文本文件 。联想格式的文本文件是每个列都带引号的CSV文件 。一个一个加太费劲了,使用编辑器的红替换也很难做到尽善尽美 。于是我写了一段perl程序脚本,用来自动的把所有的有内容的字段加上引号 。脚本代码如下:
tel.pl
#!c:perlbinperl.exe
####################################
#"姓名","群组","移动电话","家庭电话","商务电话" ,"传真","其它电话","电子邮件","地址","备注"
#"张峰","未分组","139xxxxxxxx","","xxxxxxxxx","","133xxxxxxxx","","","","","","",""
####################################
$filename_src = https://www.rkxy.com.cn/sjjc/@ARGV[0];
$filename_out = "tel.csv";
unless (open (SRCFILE, "<$filename_src"))
{
die ("n错误:不能打开你指定的文件:$filename_srcn");
}
unless (open (OUTFILE, ">$filename_out"))
{
die ("n错误:不能打开你指定的文件:$filename_outn");
}
while()
{
chomp;
@line = split(/,/,$_);

if($line[0] ne "")
{
$a1 = ""$line[0]"";
}
else
{
$a1 = "";
}
if($line[1] ne "")
{
$a2 = ""$line[1]"";
}
else
{
$a2 = "";
}
if($line[2] ne "")
{
$a3 = ""$line[2]"";
}
else
{
$a3 = "";
}
if($line[3] ne "")
{
$a4 = ""$line[3]"";
}
else
{
$a4 = "";
}
if($line[4] ne "")
{
$a5 = ""$line[4]"";
}
else
{
$a5 = "";
}
if($line[5] ne "")
{
$a6 = ""$line[5]"";
}
else
{
$a6 = "";
}
if($line[6] ne "")
{
$a7 = ""$line[6]"";
}
else
{
$a7 = "";
}
if($line[7] ne "")
{
$a8 = ""$line[7]"";
}
else
{
$a8 = "";
}
if($line[8] ne "")
{
$a9 = ""$line[8]"";
}
else
{
$a9 = "";
}
if($line[9] ne "")
{
$a10 = ""$line[9]"";
}
else
{
$a10 = "";
}
print OUTFILE "$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10n";
}
close(SRCFILE);
close(OUTFILE);
第七步,脚本使用ActivePerl解释器解释运行(可以从网上搜索下载安装,免费的),命令行如下:

推荐阅读