手机通讯录恢复
时间:2014-06-02 15:07:50
收藏:0
阅读:370
前段时间我哥备份手机通讯录备份的是xls表格格式,然后现在导入不进去了,用各种软件都是错误。我导出为vcard的(后缀是vcf),以文本格式打开看了下,发现vcard是很有格式规范的,顿时觉得有戏了。可以尝试将excel表格转换成vcard格式,然后导入。
BEGIN:VCARD N:;移动客服;;;;;; TEL;CELL:10086 STARRED:False UID:514 VERSION:3.0 REV:20140602 END:VCARD
很明显的格式,第二行就是姓名,tel那一行就是号码。
而保存的那个表格格式如下:
| 中国移动 | 10086 | |
| 中国联通 | 10010 |
这样的话,其实就很简单了,只要把vcf格式里面的姓名和号码填充一下就可以了,而那个UID我则直接给的是循环数。
大体思路有了,再给实现。
1.读取xls,直接用的是很老的jxl包,现在貌似已经不更新了。而一开始用这个操作表格的时候,提示Unable to recognize OLE stream,度娘告诉我,这是因为:
你是用什么2007 ? jxl目前停止更新了,不能读写 excel2007 如果你要读写就用 apache POI ,差不多的用法支持 2003、2007 网上有很多实例。无语,然后直接用wps打开xls,另存为老版本的xls,ok。
2,jxl的语法,
参考这篇
3,buffer写文件
这部分可以参看网络上很多东西。
jxl.jar的百度网盘连接:戳我下载
直接给出代码吧,
类名:Oper.java
package core;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class Oper {
void test(){
BufferedWriter out;
try {
out = new BufferedWriter(new FileWriter(new File("res/test.txt")));
out.write("hello"+"\r\n"+"hello");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
void work(){
try {
Workbook book=Workbook.getWorkbook(new File("res/3.xls"));
BufferedWriter out=new BufferedWriter(new FileWriter(new File("res/out.vcf")));
//get the first sheet
Sheet sheet=book.getSheet(0);
for(int i=0;i<231;i++){
Cell cell1=sheet.getCell(0,i);
String name=cell1.getContents();
Cell cell2=sheet.getCell(1,i);
String phone1=cell2.getContents();
Cell cell3=sheet.getCell(2,i);
String phone2=cell3.getContents();
String phone;
if(phone1.equals(""))phone=phone2;else phone=phone1;
out.write("BEGIN:VCARD\r\n"+"N:;"+name+";;;;;;\r\n"+"TEL;CELL:"+phone+"\r\nUID:"+i+"\r\n"+"VERSION:3.0\r\nREV:20140602\r\nEND:VCARD\r\n");
out.write(name);
}
out.close();
book.close();
} catch (BiffException | IOException e) {
System.out.println("not find");
e.printStackTrace();
}
}
public static void main(String[] args) {
new Oper().work();
}
}
我已经用wps查看过了,有231行数据,所以循环了231次。
读入的文件在工程目录下/res/3.xls,输出是/res/out.vcf.然后,通过各种手机助手就能够导入目录了。
评论(0)