乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      VSTO之旅系列(二):創(chuàng)建Excel解決方案

       法效天地 2014-01-29

       

      本專題概要

      • 引言
      • 創(chuàng)建VSTO項目
      • Excel對象模型
      • 創(chuàng)建Excel外接程序
      • 創(chuàng)建Excel文檔級自定義項
      • 小結

       

      一、引言

        也許很多朋友都沒有聽說過VSTO這個東西的,本人之前也同樣也不知道的,但是由于工作的原因接觸了這方面,由于VSTO方面國內的資料比較少,本人剛開始學習的時候都是參考MSDN的,但是上面很多資料都是英文的,可能學習起來會比較慢點,所以本人把最近一段時間學習的內容記錄下來,一來是作為一個鞏固的學習筆記,二來希望這些博客可以幫助一些剛接觸VSTO的朋友可以有所借鑒。

        講了這么多廢話(指的上面一些過渡的話),到底VSTO到底是什么呢?這里我簡單的概括下的——VSTO是微軟推出一種對Office產品進行操作的技術,其中提供了一些類庫來讓開發(fā)人員可以更方便地開發(fā)出Office的解決方案,即對Word/Excel/Outlook實現(xiàn)一些擴展功能。  對于VSTO的更多介紹大家可以參看該系列的第一篇博文。在這個專題將為大家介紹下,如何創(chuàng)建Excel的解決方案?

      二、創(chuàng)建VSTO項目

      對于剛接觸VSTO的朋友來說,可能根本就不知道如何去創(chuàng)建一個VSTO的項目的,相信通過這個部分大家就會覺得是如此的簡單。

      環(huán)境的搭建

      進行VSTO開發(fā)的環(huán)境搭建是相當簡單的,只需要安裝Visual Studio 2010(當然安裝VS2010的時候在安裝組件中必須勾選VSTO選擇,這個選項是默認勾上的。大家可以在安裝VS的時候留意下)和Office 2010就可以,當然VS2008 和Office 2007的安裝也可以完成環(huán)境的搭建。

      創(chuàng)建第一個Excel工程來開始我們的VSTO之旅

      第一步, 選擇新建項目->Visual C#->Office->2010,然后選擇Excel 2010外接程序(如何是英文版即Excel 2010 Add-in),如下圖:

        從圖中可以看到,除了外接程序外,還有Excel模板和Excel文檔這兩種項目類型,他們的區(qū)別是 外接程序是應用程序級別的,即如果你創(chuàng)建了Excel 2010外接程序,該程序對所有Excel應用都是有效的,因為每次Excel的啟動過程都會加載該插件(即該程序),大家肯定留意到當我們啟動Excel或Word的時候都會加載一些加載項,其實這些加載項就是屬于外接程序,即插件,啟動過程見下面圖:

        而 文檔和模板項目,都是屬于文檔級別的程序,該程序只對當前文檔和模板有效,創(chuàng)建這兩種類型的項目,會在項目的工程目錄下會生成一個word文件(文檔項目會生成一個 Document1.docx文件,模板項目會生成一個Document1.dotx文件)。

      創(chuàng)建成功之后,外接程序的項目文件結構見下圖:

        從圖中可以看出,剛創(chuàng)建的VSTO外接程序都只有一個ThisAddIn.cs文件,該文件即是一個宿主項(更多關于宿主項和宿主控件的內容可以查看該系列的第一篇博文),我們可以通過這個文件來對Excel對象進行訪問。同時該類中有ThisAddIn_Startup和ThisAddIn_Shutdown兩個方法,從兩個方法中命名中可以知道,如果你的代碼想在加載外接程序時運行的話,就放把代碼放在ThisAddIn_Startup方法內容,如果你想在外接程序卸載的時候運行你的代碼,就把這些代碼放在ThisAddIn_Shutdown方法內。

      三、Excel對象模型

       要開發(fā)Excel的項目,就自然少不了對Excel對象模型的了解了,只有了解Excel對象模型,這樣才能更好地對Excel進行處理。下面先給出一張Excel對象模型的圖:

       下面就具體對上圖中的各個對象做一個簡單的介紹:

      Application對象——Excel中的Application對象表示Excel應用程序,該對象是所有Excel對象的根,你可以通過Application對象,獲取到其他對象,在外接程序中,我們可以通過下面的方式來獲得Application對象:Globals.ThisAddIn.Application

      Workbooks對象代表Workbook對象的集合,而Workbook對象表示Excel中的單個工作簿,我們可以通過下面的方式來獲得工作簿對象:Globals.ThisAddIn.Application.ThisWorkbook

      Worksheets對象代表Worksheet對象的集合,而Worksheet代表的就是Excel中的表,下面的代碼可以獲得Worksheet對象:Globals.ThisAddIn.Application.ThisWorkbook.ActiveSheet (激活的表,每次打開一個Excel文件,都是表一即sheet1被激活,所以通過該代碼就說獲得表一對象)

      Range對象代表一個范圍,是操作Excel文檔最常用的對象,它可以表示為一個單元格、一行、一列或多個單元格塊(可以連續(xù),也可以不連續(xù))的單元格選定范圍,甚至多個工作表中的一組單元格??赡苌厦娴慕忉屵^于枯燥,相信大家通過下圖可以更好地理解Excel中的各個對象:

      四、創(chuàng)建Excel外接程序

      介紹完了Excel對象模型之后,我們就可以利用這些對象來對Excel文檔進行操作了,下面就創(chuàng)建一個簡單的Excel外接程序的。

      首先我們模擬一個需求,大多說軟件在使用時都會彈出一個歡迎界面,這樣我們就創(chuàng)建一個外接程序,每次打開Excel文件時彈出一個歡迎界面,退出時彈出“謝謝使用”界面。

       我們只需要在上面的創(chuàng)建工程中介入下面的代碼即可:

      復制代碼
      using System.Windows.Forms;
      
      namespace MyExcelAddIn1
      {
          public partial class ThisAddIn
          {
              private void ThisAddIn_Startup(object sender, System.EventArgs e)
              {
                  // 因為歡迎使用窗口要在打開Excel的時候彈出,所以把下面代碼放在Startup方法內
                  MessageBox.Show("歡迎使用Microsoft Excel");
              }
      
              private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
              {
                  // 在退出Excel的時候彈出謝謝使用窗口,所以把下面的代碼放在Shutdown方法內
                  MessageBox.Show("謝謝使用!");
              }
      
              #region VSTO generated code
      
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>
              private void InternalStartup()
              {
                  this.Startup += new System.EventHandler(ThisAddIn_Startup);
                  this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
              }
              
              #endregion
          }
      }
      復制代碼

      這樣,我們就完成了上面簡單的一個模擬需求了,下面讓我們按F5來測試下效果吧!
      按F5運行該程序時,首先打開一個Excel之后,一個歡迎界面就會彈出:

      點擊Excel窗口上的"X"按鈕時,就會彈出一個 “謝謝使用!”的窗口,效果如下:

      點擊 Ok 按鈕之后才會正常退出Excel。這樣就完成了一個簡單的Excel外接程序了,上面提到過外接程序是應用程序級別的,所以當你每次打開Excel的時候都會有這樣的一個歡迎界面和關閉Excel時都有一個"謝謝使用"窗口,有些朋友想問了,如果我想卸載這個插件怎么辦呢?方法很簡單,只需要右鍵你的解決方案——>清理,這樣可以了,另外你也可以從開發(fā)工具選項卡——>COM 插件,在彈出的窗口中選擇你自定義的插件 再按下移除按鈕。具體步驟見下圖:

      五、創(chuàng)建Excel文檔級自定義項

      介紹完了創(chuàng)建Excel外接程序之后,下面看看如何創(chuàng)建一個文檔級的項目:

      1. 新建一個Excel 2010 Workbook(即Excel工作簿)項目:

      2. 單擊 OK按鈕,在下面的窗口中單擊 ”O(jiān)K“按鈕:

      3. 在第一創(chuàng)建Excel工作簿項目是會彈出下面的一個窗口(窗口意思為:是否允許創(chuàng)建的項目訪問VBA項目系統(tǒng)),此時我們只需要點擊“Ok”就完成了Excel工作簿項目的創(chuàng)建。

       現(xiàn)在我們來模擬一個需求,比如現(xiàn)在有一個成績單工作表,我們希望獲得各科目不及格同學的名字。此時我們只需要在上面創(chuàng)建的工作簿項目中添加一個ComboBox,一個Button,一個textbox。在button的Click事件中添加下面的代碼:

      復制代碼
       // 找出各科目不及格同學的名字
              private void btnSearch_Click(object sender, EventArgs e)
              {
                  // 清除textbox中的內容
                  txtResult.Clear();
      
                  // 從復選框中獲得選擇的科目索引
                  int subjectIndex = cbxsubjects.SelectedIndex;      
                  if (subjectIndex == -1)
                  {
                      MessageBox.Show("請先選擇一個科目");
                      return;
                  }
      
                  // 獲得選擇的科目名稱
                  string subjectName = cbxsubjects.SelectedItem.ToString();
                  // 獲得工作表對象
                  Excel.Worksheet worksheet =(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;
                 
                  for (int row = 2; row < worksheet.UsedRange.Rows.Count+1; row++)
                  {         
                      Excel.Range rng =(Excel.Range)worksheet.Cells[row,subjectIndex + 2];
                      Excel.Range rng1 = (Excel.Range)worksheet.Cells[row, 1];
                      if (rng.Value< 60)
                      {
                          txtResult.Text += rng1.Value + "; ";
                      }
                  }
                  if (txtResult.Text.Length == 0)
                  {
                      txtResult.Text = subjectName + "沒有不及格的同學";
                  }
              }
      復制代碼

      運行該項目結果為:

      六、小結

        到這里本專題的介紹就結束了, 本專題首先主要介紹了Excel的對象模型和如何創(chuàng)建Excel的兩種項目類型,希望通過本專題大家可以開發(fā)出一些簡單的Excel的解決方案,后面一個專題將為大家介紹如何為Excel自定義一個選項卡和上下文菜單。

       專題源碼:http://files.cnblogs.com/zhili/ExcelWorkbook2.zip 

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多