顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2007年3月14日 星期三

[C#] OutLook In C#


要怎麼在 C# 中操作 OutLook 呢? 雖然 C# 並沒有直接的提供收信的元件,但是我們仍然可以透過
OFFice 提供的 Outlook 元件來存取、操作 OutLook ,首先要把元件加入參考,如下圖所示:




我們會在參考中發現到多了一個 Outlook 的參考


現在我們就可以開始操作囉....







Outlook.Application Mailapp= new Outlook.ApplicationClass();
Outlook.NameSpace mailspace=Mailapp.GetNamespace("MAPI");
Outlook.MAPIFolder mfolder=mailspace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
mfolder.Items.Sort("[ReceivedTime]",false);
string MailSubject="";
long mailcount=mfolder.Items.Count;

for (int i=1;i<mailcount;i++)
{
object item = mfolder.Items[i];


Outlook.MailItem mi = item as Outlook.MailItem;
if(mi != null)
{

if (mi.Subject ==null)
{MailSubject="";}
else
{MailSubject=mi.Subject.ToString();}
textBox1.Text+=mi.ReceivedTime.ToString()+" - "+MailSubject+"\r\n";
if (MailSubject=="給王小明的主旨")
{
Outlook.Attachments ii=mi.Attachments;  //檢查有無附件
for (int x=1;x<=ii.Count;x++)
{
Outlook.Attachment aa=(Outlook.Attachment)ii[x];
aa.SaveAsFile(@"d:\"+aa.FileName);  //有的話就存檔
}



break;
}
}
}


// 取得Folder 的另一種方法
// foreach(object item in mfolder.Items)
// {
// Outlook.MailItem mi = item as Outlook.MailItem;
//
// if(mi != null)
// {
// if (mi.Subject ==null)
// {MailSubject="";}
// else
// {MailSubject=mi.Subject.ToString();}
//
// //textBox1.Text+=mi.ReceivedTime.ToString()+" - "+MailSubject+"\r\n";
// if (MailSubject=="給王小明的主旨")
// {
// Outlook.Attachments ii=mi.Attachments;
// for (int x=1;x<=ii.Count;x++)
// {
// Outlook.Attachment aa=(Outlook.Attachment)ii[x];
// aa.SaveAsFile(@"d:\"+aa.FileName);
// }
//
//
//
// break;
// }
//
//
//
//
// }


// }

mailspace.Logoff();
mfolder=null;
mailspace=null;
Mailapp =null;









以上和大家分享...


2007年3月12日 星期一

[C#] DataTable to CSV

有時候可能會需要將某的Table全部匯出成 CSV , 雖然可以只接用 SQL Server 直接匯出來但是可能有時候會需要程式中轉出來,還有一點要注意在匯出完要存檔的時候,記得要將編碼轉成BIG5的,不然會拿去匯入資料庫的時候,中文可能會出現亂碼的情形,因為.NET預設的編碼是Unicode

StreamWriter CSVsw =new StreamWriter(Sourcefile,false,System.Text.Encoding.Default);

private string CSVExplor(DataTable tb)
{
Mydatas="";
foreach (DataRow row in tb.Rows)
{
foreach (DataColumn column in tb.Columns)
{ if (column.DataType==System.Type.GetType("System.DateTime"))
{
IFormatProvider culture = new System.Globalization.CultureInfo("en-US", true);
Mydatas += Convert.ToDateTime(row[column].ToString()).ToUniversalTime().ToString(culture) + ","; }
else
{
Mydatas += row[column].ToString() + ",";
}
}
Mydatas += "\r\n"; } return Mydatas;
}