VCF Vcard импорт c # - PullRequest
       74

VCF Vcard импорт c #

1 голос
/ 29 сентября 2011

Я пытаюсь написать класс, который импортирует файлы * .vcf (Vcard), потому что я не нашел подходящий класс .net для решения этой задачи.

Поэтому я решил обработать * .vcfфайл как файл * .txt.Я просто импортирую весь файл построчно с помощью StreamReader.Наконец, я сохраняю строку в объекте List.

Код:

 private List<string> vcardList = new List<String>();
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        using (StreamReader reader = new StreamReader(@"H:\VS.vcf"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                vcardList.Add(line);
            }
        }
    }

После импорта текста мне нужно было отредактировать строки, потому что мне нужно удалить все ненужные символы.Я попытался использовать RedEx claa:

private void button1_Click(object sender, EventArgs e)
    {
        vcardList[0] = Regex.Replace(vcardList[0], "BEGIN:", string.Empty);          
    } 

, который работает очень хорошо, для первой строки!но файл * .vcf очень сложный и всегда другой.

Итак, мой вопрос: есть ли лучший способ решить эту проблему?

Это файл * .vcf:

BEGIN:VCARD
VERSION:2.1
N;LANGUAGE=de;CHARSET=Windows-1252:Test;Mustermann;;;(geschäftlich)
FN;CHARSET=Windows-1252:Test Mustermann (geschäftlich)
ORG:Mustermann CompanyTITLE;CHARSET=Windows-1252:CEO
TEL;WORK;VOICE:0049 1111 22 769 23 - 1
TEL;CELL;VOICE:0049 2222 33 71 55 90
ADR;WORK;PREF;CHARSET=Windows-1252:;;Frobuehl 22;Gothtown;;101092;England
LABEL;WORK;PREF;CHARSET=Windows-1252;ENCODING=QUOTED-PRINTABLE:Leihb=FChl 21=0D=0A=
101092 Frobuehl 
X-MS-OL-DEFAULT-POSTAL-ADDRESS:2
URL;HOME:www.Test-Mustermann.de
EMAIL;PREF;INTERNET:Test@Test-Mustermann.de
X-MS-OL-DESIGN;CHARSET=utf-8:<card 
END:VCARD

Мне нужны только имя и адрес.Заранее спасибо

Ответы [ 4 ]

4 голосов
/ 29 сентября 2011

Довольно старый, но он все еще работает: https://github.com/drlongnecker/Thought.vCards

1 голос
/ 07 октября 2011

Хелле, извините за долгую задержку.

Я решил свою проблему с помощью следующего кода:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    public Form1()
{
InitializeComponent();
}

    private void Form1_Load(object sender, EventArgs e)
   {
        Outlook.ContactItem contact;
        Outlook.Application app = new Outlook.Application();

        contact = (Outlook.ContactItem)app.Session.OpenSharedItem(@"C:\vv.vfc");
        MessageBox.Show(contact.FirstName);
    }
   }
 }

Это всего лишь пример того, как легко импортировать файл VCF с помощью C #. надеюсь, это поможет. Конечно, я бы не реализовал это таким образом, я бы скорее создал метод с параметром «comingFile »или что-то еще.

Berry

1 голос
/ 29 сентября 2011

Вы можете попробовать использовать этот образец .

0 голосов
/ 29 апреля 2015

решение с приложением outlook неэффективно.

Outlook.Application app = new Outlook.Application();

это откроет перспективы в первую очередь. и на самом деле вам нужно только открыть vcard и разобрать его, чтобы извлечь из него нужную информацию.

...