新年了,给自己买一个礼物,奖励一下自己一年辛勤的劳动。
I966还是一部不错的电话,用了一天,感觉到了国产电子产品在不断的进步。原来我用的是Nokia6021,我有463个联系人共计1000多个电话号码、电子邮件和地址等信息。要全部导在新的电话中也是一件需要动脑筋的工作。
Nokia有PC套件,所有的电话簿都会同步在Outlook中。
第一步,我先把所有的Outlook联系人选择导出成Windows以逗号分隔的CSV文件。这实际上是一种文本文件。
第二步,用EXCEL打开这个导出的文件,把第一行编辑成这10列:
---------------------------------------------------------------------
姓名,群组,移动电话,家庭电话,商务电话,传真,其它电话,电子邮件,地址,备注
---------------------------------------------------------------------
这时候,会发现所有长的电话号码都变成了指数表示方式,如“139+E8”,需要把这些列进行单元格式转换变为“数值”,然后再把所有的单元格转换为“文本”。注意:这样会有一个结果,区号前面的0会被去掉,需要手工补回!
第三步,这是是大量的手工调整工作。因为OUTLOOK转换出来的文件有几十个字段,而联想格式只有10个列。先去掉没有用的空字段,然后把其他各个栏目的内容分别移动到对应的新的列中。注意在同一行中移动,以免把电话号安错人。这样直到整个表只有上述10列为止。
第四步,把EXCEL另存为CSV格式文件,然后用文本编辑器打开,推荐用UltraEdit32编辑。首先全局把所有的双引号替换为什么都没有(不是空格),然后保存。
第五步,转换成联想格式的文本文件。联想格式的文本文件是每个列都带引号的CSV文件。一个一个加太费劲了,使用编辑器的红替换也很难做到尽善尽美。于是我写了一段perl程序脚本,用来自动的把所有的有内容的字段加上引号。脚本代码如下:
tel.pl
#!c:\\perl\\bin\\perl.exe
####################################
#"姓名","群组" ,"移动电话" ,"家庭电话","商务电话" ,"传真","其它电话" ,"电子邮件","地址","备注"
#"张峰","未分组","139xxxxxxxx","" ,"xxxxxxxxx","" ,"133xxxxxxxx","","","","","","",""
####################################
$filename_src = @ARGV[0];
$filename_out = "tel.csv";
unless (open (SRCFILE, "<$filename_src"))
{
die ("\n错误:不能打开你指定的文件:$filename_src\n");
}
unless (open (OUTFILE, ">$filename_out"))
{
die ("\n错误:不能打开你指定的文件:$filename_out\n");
}
while(<SRCFILE>)
{
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,$a10\n";
}
close(SRCFILE);
close(OUTFILE);
第七步,脚本使用ActivePerl解释器解释运行(可以从网上搜索下载安装,免费的),命令行如下:
perl tel.pl telbook3.csv
第八步,执行完后,会生成一个tel.csv的文件。这个文件就是接近成品了。在i966电话上建立一个所有字段都有内容的联系人,通过“工具”-“内存管理”-“导出”功能导出这个联系人,然后通过蓝牙把这个文件传到PC上,用UltraEdit打开,会发现这个文件是“U-DOS”格式,也就是unicode的一种。我们把刚才那个半成品文件的内容选择转贴到这个文件里面,保存后,就形成了成品文件。然后用蓝牙把文件传送回电话的内存,选择导入即可完成全部的电话簿导入工作了。
这一过程可是够费劲的,为此还专门写了一个程序。我的职业是一个网管,因此编程什么的也还比较熟练。整个过程大约用了2小时吧。
顺便提一下:我感觉国产电话的设计相当简洁,符合中国人的习惯。比如说日程安排这个我非常常用的功能,i966上面就只有一项日程安排设定。而Nokia上面被分为“会议”“纪念日”“备忘”等若干项,其实尽可以被一项备忘录所代替。
祝大家使用愉快,希望朋友们支持中国设计、中国制造,愿我们的民族工业更强大。