<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      VSTO 學習筆記(十二)自定義公式與Ribbon

      這幾天工作中在開發一個Excel插件,包含自定義公式,根據條件從數據庫中查詢結果。這次我們來做一個簡單的測試,達到類似的目的。

      即在Excel 2010中添加一個Ribbon,包含4個自定義公式:僅僅是示例公式加減乘除。

      最終效果:

      測試代碼下載

       

      1、解決方案包含兩個項目:

      ExcelAddIn:Excel 插件

      ExcelUDF:Excel 自定義公式

      2、首先創建一個Excel 2010 Add-in項目:

      3、添加一個可視化Ribbon:

      4、在Ribbon的設計視圖中,設置下RibbonTab的屬性:

      有個ControlIdType屬性,當設置為Custom時,此Ribbon顯示為Office中獨立的一項;當設置為Office時,此Ribbon作為Add-In中的一項出現。

      5、在MyRibbon中添加一個Menu,在其中放置四個按鈕:

      6、創建一個類庫項目:

      7、編寫加減乘除四個函數和COM注冊、反注冊函數:

      View Code 
      using System;
      using System.Runtime.InteropServices;
      using Microsoft.Win32;

      namespace ExcelUDF
      {
          [Guid(
      "E72F44C7-DD4A-4FA2-BC32-4EA9925749DB")]
          [ClassInterface(ClassInterfaceType.AutoDual)]
          [ComVisible(
      true)]
          
      public class ExcelUDF
          {
              
      public int Add(int a, int b)
              {
                  
      return a + b;
              }

              
      public int Subtract(int a, int b)
              {
                  
      return a - b;
              }

              
      public int Multiply(int a, int b)
              {
                  
      return a * b;
              }

              
      public int Divide(int a, int b)
              {
                  
      return a / b;
              }

              
      #region COM Related

              [ComRegisterFunction]
              
      public static void RegisterFunction(Type type)
              {
                  Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type, 
      "Programmable"));
                  var key 
      = Registry.ClassesRoot.OpenSubKey(GetSubKeyName(type, "InprocServer32"), true);
                  key.SetValue(
      "", Environment.SystemDirectory + @"\mscoree.dll", RegistryValueKind.String);
              }

              [ComUnregisterFunction]
              
      public static void UnregisterFunction(Type type)
              {
                  Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type, 
      "Programmable"), false);
              }

              
      private static string GetSubKeyName(Type type, string subKeyName)
              {
                  var s 
      = new System.Text.StringBuilder();
                  s.Append(
      @"CLSID\{");
                  s.Append(type.GUID.ToString().ToUpper());
                  s.Append(
      @"}\");
                  s.Append(subKeyName);
                  
      return s.ToString();
              }
              
      #endregion
          }

      8、我安裝的是Excel x64,需要手動注冊自定義公式的程序集,為此在項目屬性中的Build Events中寫入批處理腳本來自動注冊:

      %windir%\Microsoft.NET\Framework64\v4.0.30319\regasm /codebase "$(TargetPath)"

      這樣在每次編譯成功后就會自動注冊該自定義公式。

      9、在生成管理器中配置為 x64:

      10、在Ribbon項目中添加調用自定義公式的代碼:

      View Code 
      using Microsoft.Office.Tools.Ribbon;

      namespace ExcelAddIn
      {
          
      public partial class RibbonDemo
          {
              
      private void RibbonDemo_Load(object sender, RibbonUIEventArgs e)
              {

              }

              
      private void btnAdd_Click(object sender, RibbonControlEventArgs e)
              {
                  Globals.ThisAddIn.Application.ActiveCell.Formula 
      = "=Add()";
              }

              
      private void btnSubtract_Click(object sender, RibbonControlEventArgs e)
              {
                  Globals.ThisAddIn.Application.ActiveCell.Formula 
      = "=Subtract()";
              }

              
      private void btnMultiply_Click(object sender, RibbonControlEventArgs e)
              {
                  Globals.ThisAddIn.Application.ActiveCell.Formula 
      = "=Multiply()";
              }

              
      private void btnDivide_Click(object sender, RibbonControlEventArgs e)
              {
                  Globals.ThisAddIn.Application.ActiveCell.Formula 
      = "=Divide()";
              }
          }

      11、修改Ribbon項目屬性,將 Excel設置為啟動的擴展程序:

      12、編譯、運行,會調用Excel來打開,自動加載我們的插件ExcelAddIn:

      13、激活自定義公式:

      在【Developer】選項卡中點擊【Add-Ins】,再點擊【Automation】找到我們編寫的自定義公式,【OK】。

      14、此時在Excel中就可以使用我們的公式了,EnjoyJ

       

      小結:

      本次把自定義Ribbon與自定義公式結合起來使用,具體細節可以參考源代碼,在我之前的VSTO 系列文章中也有介紹。

      需要注意的是這種方法只適用于Excel 2007、2010,2003不支持,關于Excel 2003的自定義菜單及自定義公式解決方案后面再介紹。

      此外,只有Excel 2010 x64需要用批處理腳本來注冊自定義公式,Excel 2010 x86不需要,會自動注冊。

      posted @ 2011-08-30 20:43  江蘇瑞步科技  閱讀(8072)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 青青草国产自产一区二区| 日韩亚洲国产激情一区二区| 亚洲精品综合第一国产综合| 桃花岛亚洲成在人线AV| 精品无人区一区二区三区在线| 亚洲欧洲av人一区二区| 国产亚洲精品第一综合| 国产视频最新| 亚洲av高清一区二区三| 美女扒开奶罩露出奶头视频网站| 亚洲爆乳少妇无码激情| 在线播放国产精品三级网| 国产在线不卡精品网站| 国产成人高清精品亚洲| 日韩成人一区二区二十六区| 99久热在线精品视频| 久久国产免费直播| 日本一本无道码日韩精品| 欧美猛少妇色xxxxx猛叫| 噜噜综合亚洲av中文无码| 熟女系列丰满熟妇AV| 南平市| 国产精品免费视频不卡| 久久三级国内外久久三级| 性奴sm虐辱暴力视频网站| 永登县| 最近2019中文字幕免费看| 国产a级三级三级三级| 一本精品99久久精品77| 久久久久久久久毛片精品| 日韩精品亚洲 国产| 一区二区不卡国产精品| 亚洲肥熟女一区二区三区| 爆乳女仆高潮在线观看| 久久亚洲国产品一区二区| 欧美乱妇高清无乱码免费| 班戈县| 国产无遮挡又黄又爽不要vip软件| 欧美日韩精品一区二区视频| 玖玖在线精品免费视频| 一区二区在线观看成人午夜|