vcf nach xml konvertieren

4 Antworten

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();


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

Nach langer Recherche haben wir eine Lösung namens GainTools Adressbuch-Manager-Tool entwickelt. Das funktioniert wirklich ohne Unterbrechungen und jeder Anwender ohne technische Vorkenntnisse kommt mühelos mit der Software zurecht. Hier erhalten Sie vollständige Schritt-für-Schritt-Details zum Konvertierungsprozess. Diese Software unterstützt alle Windows-Betriebssystemversionen.

Besuchen Sie hier:- https://www.gaintools.com/address-book-manager/