日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開發(fā)C#.NET → VS2010將Outlook郵件導(dǎo)出成Word文檔格式

      VS2010將Outlook郵件導(dǎo)出成Word文檔格式

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2011/1/28 9:08:52字體大小:A-A+

      作者:佚名點(diǎn)擊:1772次評(píng)論:1次標(biāo)簽: outlook word vs2010

      • 類型:郵箱工具大。261KB語(yǔ)言:中文 評(píng)分:10.0
      • 標(biāo)簽:
      立即下載
      2 頁(yè) 導(dǎo)出功能的核心代碼


      1 void exportButton_Click(Office.CommandBarButton ctrl, ref bool cancel)
      2 {
      3 object sFileName;
      4 string sPath = string.Empty;
      5
      6 // Get mail export path.
      7 if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
      8 {
      9 sPath = folderBrowserDialog.SelectedPath;
      10
      11 // If the selected path is a folder, add '\' at the end of the path string.
      12 if (sPath != Path.GetPathRoot(sPath))
      13 {
      14 sPath += "\\";
      15 }
      16 }
      17 else
      18 {
      19 return;
      20 }
      21
      22 Word.Application app = new Word.Application();
      23 Word.Document doc = null;
      24 object unknow = Type.Missing;
      25 object format = Word.WdSaveFormat.wdFormatDocumentDefault;
      26 Outlook.Explorer activeExplorer = this.Application.Explorers.Application.ActiveExplorer();
      27
      28 try
      29 {
      30 // Export all selected mail items to word.
      31 foreach (object selectedItem in activeExplorer.Selection)
      32 {
      33 Outlook.MailItem mailItem = selectedItem as Outlook.MailItem;
      34 if (mailItem != null)
      35 {
      36 sFileName = CreateFileName(sPath, mailItem.Subject);
      37 //doc = app.Documents.Add(ref unknow, ref unknow, ref unknow, ref unknow);
      38 //doc.Content.Text = mailItem.Body;
      39 //doc.Paragraphs.Last.Range.Text = mailItem.Body;
      40
      41 Outlook.Inspector inspector = mailItem.GetInspector;
      42 doc = (Word.Document)inspector.WordEditor;
      43 //mailItem.SaveAs(sFileName.ToString(), Outlook.OlSaveAsType.olDoc);
      44
      45 doc.SaveAs(ref sFileName, ref format, ref unknow, ref unknow, ref unknow,
      46 ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
      47 ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);
      48 //doc.Close(ref unknow, ref unknow, ref unknow);
      49 }
      50 }
      51 }
      52 catch (Exception ex)
      53 {
      54 MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
      55 }
      56 finally
      57 {
      58 if (app != null)
      59 {
      60 app.Quit(ref unknow, ref unknow, ref unknow);
      61 }
      62 }
      63 }
        有幾個(gè)地方需要說明一下。首先我們要得到當(dāng)前已選擇的郵件列表,這個(gè)是通過this.Application.Explorers.Application.ActiveExplorer().Selection來得到的,ActiveExplorer()方法返回的是當(dāng)前選中的郵箱視圖,比如發(fā)件箱、草稿箱、收件箱等。Selection屬性得到是其中所有被選中的郵件的集合,在Outlook中你可以同時(shí)選中多封郵件。程序通過foreach便利所有當(dāng)前被選中的郵件,然后依次導(dǎo)出到Word文檔中。郵件主題被用作Word文檔的名稱,這里有一個(gè)CreateFileName方法用來處理并生成最終的文件名,稍后給出這個(gè)方法的代碼。對(duì)于如何保存Word文檔的內(nèi)容,這里有幾個(gè)地方需要注意:

        1. mailItem對(duì)象可以通過Body,HTMLBody,RTFBody來得到郵件的內(nèi)容,但是其中的格式會(huì)有所區(qū)別。通過Body得到的是去掉所有樣式之后的純文本內(nèi)容,HTMLBody得到的是轉(zhuǎn)換之后的HTML格式的郵件內(nèi)容,RTFBody則是包含富文本格式的二進(jìn)制郵件內(nèi)容。

        2. 我們可以通過doc.Content.Text或doc.Paragraphs.Last.Range.Text來給Word文檔填充內(nèi)容,兩者的效果是一樣的。但是這兩種方法只能接收字符串內(nèi)容,也就是說如果郵件中包含特定格式的信息都會(huì)被自動(dòng)過濾掉,如郵件中的表格、文字樣式、圖片、超鏈接等內(nèi)容。

        3. 通過mailItem.GetInspector將郵件的編輯器轉(zhuǎn)換成Word文檔可以將Outlook郵件中的所有內(nèi)容無(wú)差異地保存到Word中。因?yàn)镺utlook郵件編輯器使用的正是Word文檔的編輯器,因此這個(gè)轉(zhuǎn)換是有效的。

        4. Word文檔的創(chuàng)建、保存方法與其它在C#中操作Word相同。需要注意的是如果使用doc.Content.Text或doc.Paragraphs.Last.Range.Text方法填充Word文檔內(nèi)容,完畢之后一定要關(guān)閉Word文檔。另外就是程序結(jié)束后要關(guān)掉Word進(jìn)程,否則每次導(dǎo)出都會(huì)在內(nèi)存中創(chuàng)建一個(gè)Word進(jìn)程造成資源的浪費(fèi)。

        5. Word文檔保存的格式選用wdFormatDocumentDefault,這個(gè)是Word文檔保存的默認(rèn)格式,如果選用其它格式,需要確保你所保存的內(nèi)容能被選用的格式支持。

        下面來看一下CreateFileName方法。這個(gè)方法是用來處理生成的Word文檔的文件名的。程序中使用了郵件主題作為Word文件名,由于Windows文件名不支持部分特殊字符,因此我們需要在生成文件名的過程中將這些特殊字符過濾掉,同時(shí)為了確保所生成的Word不會(huì)被重復(fù)覆蓋,需要對(duì)文件名作差異化處理——即如果文件存在則在后面增量增加一個(gè)數(shù)字,如新建文件1、新建文件2等。另外就是如果文件名過長(zhǎng)只截取前100個(gè)字符。

      1 private string CreateFileName(string sPath, string sFileName)
      2 {
      3 // Remove unsupport charts for file name.
      4 string sRst = sFileName.Replace("\\", "");
      5 sRst = sRst.Replace("/", "");
      6 sRst = sRst.Replace(":", "");
      7 sRst = sRst.Replace("*", "");
      8 sRst = sRst.Replace("?", "");
      9 sRst = sRst.Replace("\"\"", "");
      10 sRst = sRst.Replace("<", "");
      11 sRst = sRst.Replace(">", "");
      12 sRst = sRst.Replace("|", "");
      13
      14 if (sRst.Length > 100)
      15 {
      16 sRst = sRst.Substring(0, 100);
      17 }
      18
      19 // Make sure the file name is unique.
      20 int i = 1;
      21 if (File.Exists(string.Concat(sPath, sRst, ".docx")))
      22 {
      23 while (true)
      24 {
      25 if (File.Exists(string.Concat(sPath, sRst, i.ToString(), ".docx")))
      26 {
      27 i++;
      28 }
      29 else
      30 {
      31 sRst += i.ToString();
      32 break;
      33 }
      34 }
      35 }
      36
      37 // Return *.docx file name.
      38 return string.Concat(sPath, sRst, ".docx");
      39 }

       

      本文導(dǎo)航

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(1)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)