vcf nach xml konvertieren

4 Antworten

Es gibt keine manuelle Lösung, mit der Sie VCF-Dateien in das Excel-Format exportieren können. Eine große Anzahl von Benutzern verwendet Lösungen von Drittanbietern, um die Konvertierung durchzuführen. Sie können die VCF zu CSV Exporteur Software ausprobieren. Das Dienstprogramm ist in der Lage, mehrere Kontakte aus einer VCF-Datei in eine CSV-Datei zu exportieren, da CSV problemlos in einer Excel-Datei geöffnet werden kann, ohne dass Probleme auftreten.

Mehr Info:- https://www.osttopstapp.com/vcf-to-csv.html

Hallo,

ich habe vor einiger Zeit ein kleines Perl Skript gefunden, das vcf in das XML Format der Fritzbox übersetzt. Damit es mit dem Export aus dem Telefonbuch meines Android 5 funktioniert musste ich es etwas modifizieren. Zur Verwendung muss das Telefonbuch aus dem Handy in eine vcf Datei exportiert und auf einen Rechner kopiert werden, der Perl installiert hat. Dort einfach den Namen der vcf Datei als Aufrufparameter mitgeben. Die Ausgabe in XML erfolgt auf STDOUT und kann bei Gefallen in eine xml Datei umgeleitet werden.Diese kann über die Weboberfläche der Fritzbox ins Telefonbuch importiert werden. Die Fritzbox ersetzt dabei ein eventuell bereits bestehendes Telefonbuch mit dem neuen.

PS.: Danke an den unbekannten Autor des Skriptes, das ich damals als Grundlage verwenden konnte.


Hier ist meine Version des Perl-Skriptes:

#!/usr/bin/perl -w
use warnings;
use strict;
use MIME::QuotedPrint;
use XML::LibXML;
use XML::LibXML::PrettyPrint;

my $inputFile;
foreach my $arg (@ARGV) {
#print $arg, "\n";
$inputFile = $arg;
}

$inputFile = shift;
open(VCARD, $inputFile)
or die "Can't open $inputFile";

my $newContactFlag = 0;
my %contactHash;
my $name;
my $i = 0;

# Input section
my $doc = XML::LibXML::Document->new('1.0', 'utf-8');

my $root = $doc->createElement("phonebooks");
my $pb = $doc->createElement("phonebook");
$root->appendChild($pb);

while()
{
if($_ =~ /^FN[:;](.+)\n$/)
{
$name = decode_qp($1);
chop($name);
$name =~ s/CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE://;
my $cont = $doc->createElement("contact");
my $cat = $doc->createElement("category");
$cat->appendTextNode("0");
$cont->appendChild($cat);
my $pers = $doc->createElement("person");
$cont->appendChild($pers);
my $rn = $doc->createElement("realName");
$rn->appendTextNode("$name");
$pers->appendChild($rn);
my $tel = $doc->createElement("telephony");
$cont->appendChild($tel);
$contactHash{$name} = $cont;
}
elsif( $_ =~ /TEL;(.+):(.+)\r\n$/)
{
$i++;
my $type = lc($1);
my $cont = $contactHash{$name};
foreach my $tel ($cont->findnodes('telephony')){
my $num = $doc->createElement("number");
my $number = $2;
$number =~ s/\+49/0/;
$number =~ s/\-//g;
$num->appendTextNode($number);
$tel->appendChild($num);
$type =~ s/cell/mobile/;
$num->setAttribute('type'=> $type);
$num->setAttribute('vanity'=> "");
$num->setAttribute('prio'=> "1");
}
}

}

close(VCARD);

# Output Section
my $id = 0;
foreach my $key ( sort keys %contactHash )
{
my $cont = $contactHash{$key};
my $tag = $doc->createElement("service");
$cont->appendChild($tag);
$tag = $doc->createElement("setup");
$cont->appendChild($tag);
$tag = $doc->createElement("mod_time");
$tag->appendTextNode("1319558289");
$cont->appendChild($tag);
$tag = $doc->createElement("uniqueid");
$tag->appendTextNode($id);
$cont->appendChild($tag);
$pb->appendChild($cont);
$id++;
}
$doc->setDocumentElement($root);

my $pp = XML::LibXML::PrettyPrint->new(
indent_string => ' ' x4,
element => {
compact => [qw| number category realName mod_time uniqueid | ],
}
);
$pp->pretty_print($doc);
print $doc->toString();


Was möchtest Du wissen?