Ну берёшь и пишешь.
Я когда-то наоборот писал (Не помню зачем...) - делов на полчаса. Это Java - так-то ну её, проще на питоне подобное написать. Он же везде есть можно сказать.
package csv2vcf;
import java.io.*;
import java.util.BitSet;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.codec.net.QuotedPrintableCodec;
/**
*
* @author soarin
*/
public class Csv2vcf {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String s, name, number, charset;
if (args.length!=2) {
System.err.println("Wrong arguments! Use 'csv2vcf.jar input.csv output.vcf' for launch.");
return;
}
try {
FileReader fr=new FileReader(args[0]);
FileWriter fw=new FileWriter(args[1]);
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
while ((s=br.readLine())!=null) {
StringTokenizer st = new StringTokenizer(s, ",");
if(st.countTokens()>=2) {
name=st.nextToken();
if (p.matcher(name).find()) {
name = StringUtils.newStringUsAscii(
QuotedPrintableCodec.encodeQuotedPrintable(new BitSet(), name.getBytes()));
charset=";CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE";
} else {
charset="";
}
number=st.nextToken();
// TODO: extra parameters?
bw.write("BEGIN:VCARD"); bw.newLine();
bw.write("VERSION:2.1"); bw.newLine();
bw.write("N"+charset+":;"+name+";;;"); bw.newLine();
bw.write("FN"+charset+":"+name); bw.newLine();
bw.write("TEL;CELL;PREF:"+number); bw.newLine();
bw.write("END:VCARD"); bw.newLine();
}
}
fr.close(); bw.flush(); fw.close();
} catch (Exception e) { System.err.println(e.getMessage()); }
}
}