我试图编写一个导入* .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
我只需要姓名和地址。提前致谢
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以尝试使用此sample。
答案 2 :(得分:1)
Helle,sry长时间拖延。
我现在用以下代码解决了我的问题:
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);
}
}
}
这只是如何使用C#轻松导入VCF文件的示例。我希望这有帮助。当然我不会以这种方式实现它,我宁愿创建一个带有参数“incomingFile”或smth else的方法。
浆果
答案 3 :(得分:1)
C#纯粹没有用于vcfs的特定方法或类。 但是这些解决方案可能是方法。最后一个是最好的:
1。使用Microsot.office.interop.outlook
。
哦,不,它会先打开Outlook,然后再执行步骤。您可以确定这不是最佳解决方案。
2。使用Thought vcard。它还不错,但要想像您有多个vcf,然后将它们合并到一个vcf中。使用此软件包很难(或几乎不可能)使用它。
3。使用VCardlib。它没有以前的问题,但是直到现在才可以与vcf版本4一起更新。