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

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

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

      VSTO 學(xué)習(xí)筆記(十三)談?wù)刅STO項(xiàng)目的部署

      一般客戶計算機(jī)專業(yè)水平不高,但是有一些Office水平相當(dāng)了得,尤其對Excel的操作非常熟練。因此如果能將產(chǎn)品的一些功能集成在Office中,將會有很好的基礎(chǔ)。

      但是由于客戶安裝的Office版本不一,所以VSTO項(xiàng)目的部署問題顯得尤為重要,需要考慮很多問題。

      測試代碼下載

      本系列所有測試代碼均在Visual Studio 2010 Ultimate SP1 + Office 2010 Professional Plus x64 SP1 上測試通過

       

      大致歸納一下,主要有以下一些情況:

      1、Office版本不同

      目前主要有Office 2003、Office 2007、Office 2010。

      2、32位與64位的Office

      目前只有Office 2010提供64位版本。

      3、64位操作系統(tǒng)安裝32位的Office

      目前多出現(xiàn)在新上市的筆記本,很多都是Win7 64位,安裝了Office 2007、2010 32位。

      此外,不同VSTO項(xiàng)目的部署方式也不相同。主要有如下一些VSTO項(xiàng)目類型:

      1、文檔類型

      如Word Document、Excel Workbook

      2、AddIn類型

      如Word AddIn、Excel AddIn

      3、Shared AddIn類型

      4、Excel自定義公式類型

       

      下面我們就來逐個探討一下相應(yīng)的部署方案。

      注意VS2010 只支持Office 2007、Office 2010,若要開發(fā)基于Office 2003的VSTO項(xiàng)目,請使用VS2005、VS2008。

      一、待部署的項(xiàng)目是文檔類型

      1.1、使用VS 2010創(chuàng)建一個Excel Workbook項(xiàng)目:

       

      1.2、選擇Office 2007格式.xlsx:

       

      1.3、在一個工作表中放置一個按鈕:

       

      1.4、在其單擊事件中彈出一個對話框:

       

      1.5、F5運(yùn)行,會打開Excel,點(diǎn)擊按鈕彈出我們希望看到的信息:

       

      1.6、在Debug目錄下會發(fā)現(xiàn)生成了如下這些文件:

      由于是文檔類型,因此生成一個Excel工作簿很正常。有一個.vsto格式的文件很少見,它就是VSTO項(xiàng)目部署時的安裝文件。

      .vsto文件其實(shí)是一個XML文件,用文本編輯器打開可以看到具體內(nèi)容:

      包含了VSTO項(xiàng)目的具體信息,如.NET運(yùn)行時版本,依賴的程序集,數(shù)字簽名等信息,不要手動修改這個文件。

      .NET運(yùn)行時為4.0,所以客戶端首先要安裝.NET Framework 4.0。

      .vsto的默認(rèn)打開方式是Visual Studio Tools For Office Execution Engine:

      該組件包含于Visual Studio Tools For Office 運(yùn)行時,因此客戶端若要運(yùn)行VSTO程序,還需要安裝Visual Studio Tools For Office 運(yùn)行時。

      Visual Studio 2010 Tools for Office Runtime 可以在這里下載。

       

      1.7、我用了一個虛擬機(jī)模擬客戶端,安裝了.NET 4.0和Office 2010后就可以打開.vsto了:

       

      1.8、安裝成功后就可以打開Debug中的Excel文件了:

      注意文檔類型的VSTO項(xiàng)目安裝后只對發(fā)布的一個文檔有效(只對Debug中的Excel有效),不影響用戶其他的Office文件,即文檔類型項(xiàng)目不是全局性的。

       

      1.9、在控制面板中可以將該VSTO項(xiàng)目卸載:

       

      二、待部署的項(xiàng)目是Add In類型

      2.1、新建一個Word Add In項(xiàng)目:

       

      2.2、添加一個可視化Ribbon:

       

      2.3、Ribbon中添加一個按鈕:

       

      2.4、單擊彈出對話框:

       

      2.5、F5運(yùn)行后會打開Word:

       

      2.6、在Debug目錄中會生成一些文件:

       

      2.7、客戶端依舊需要安裝.NET 4.0、Visual Studio 2010 Tools For Office Runtime才能運(yùn)行該VSTO項(xiàng)目:

      注意Add In 類型是全局性的,只要安裝,用戶隨便打開一個Office文檔都會包含該Add In。

       

      三、Shared AddIn類型

      所謂Shared AddIn,就是該插件可以被多種Office文檔共用,但是一般都是針對一種Office文檔開發(fā)。

      3.1、創(chuàng)建一個Shared AddIn項(xiàng)目:

       

      3.2、這里我選擇只針對Excel:

       

      3.3、設(shè)置加載屬性:

       

      3.4、默認(rèn)有兩個項(xiàng)目,一個是插件,另一個是MSI安裝項(xiàng)目:

      這里我們只談部署,關(guān)于如何開發(fā)相關(guān)的項(xiàng)目請參考其他資料。

      添加System.Windows.Forms的引用,然后在Connect.cs中的OnStartupComplete事件中彈出一個對話框:

       

      3.5、設(shè)置安裝項(xiàng)目屬性:

      注意TargetPlatform沒有AnyCPU,故需要針對x86、x64分別編譯一份MSI安裝文件。

       

      3.6、設(shè)置安裝項(xiàng)目運(yùn)行依賴組件:

      這里可以設(shè)置需要.NET Framework 4.0:

       

      在安裝項(xiàng)目屬性頁中的【Prerequisites】中可以設(shè)置更多的運(yùn)行依賴組件:

       

      3.7、設(shè)置完成后編譯安裝項(xiàng)目,會生成相應(yīng)的MSI安裝包:

       

      3.8、直接在安裝項(xiàng)目右擊àInstall即可以安裝:

      安裝完后打開一個Excel就會看到我們的對話框:

       

      四、Excel自定義公式類型

      之所以把Excel自定義公式類型單獨(dú)拿出來說,是因?yàn)镋xcel自定義公式的注冊有些特殊,尤其是Excel 2010 x64。

      4.1、創(chuàng)建一個類庫項(xiàng)目:

       

      4.2、寫加減乘除四個函數(shù)和COM注冊、反注冊函數(shù):

      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
          }

       

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

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

      如果是Excel x86,這樣注冊:

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

      部署到客戶端時需要執(zhí)行這個批處理腳本。

       

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

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

      4.5、在Ribbon項(xiàng)目中添加調(diào)用自定義公式的代碼:

      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()";
              }
          }

      4.6、修改Ribbon項(xiàng)目屬性,將 Excel設(shè)置為啟動的擴(kuò)展程序:

      4.7、編譯、運(yùn)行,會調(diào)用Excel來打開,自動加載我們的插件ExcelAddIn

      4.8、激活自定義公式:

      在【Developer】選項(xiàng)卡中點(diǎn)擊【Add-Ins】,再點(diǎn)擊【Automation】找到我們編寫的自定義公式,【OK】。

      4.9、此時在Excel中就可以使用我們的公式了;

         

      小結(jié):

      1、若客戶使用的主要是Office 2003,則使用VS2008開發(fā)(.NET 3.5);若客戶使用Office 2007或更新版本,則使用VS2010來開發(fā)。(.NET 4.0)

      2、一般的安裝順序?yàn)椋?

      .NET Framework –> Visual Studio Tools For Office Runtime à MSI或.vsto

      3、安裝之前最好將原來版本卸載,若.vsto出現(xiàn)無法安裝的情況,則可以使用Mage.exe清理一下緩存再嘗試安裝。

      命令行下執(zhí)行:mage -cc

       

      Mage.exe是Windows SDK中的一個小工具,安裝完Windows SDK后默認(rèn)位于:

      C:\Program Files (x86)\Microsoft SDKs\Windows\xx\Bin     àWindows x64

      C:\Program Files\Microsoft SDKs\Windows\xx\Bin     àWindows x86

      其中xx是Windows SDK的版本號,如v6.0A、v7.0A、v7.1等。

       

       使用VSTO開發(fā)建議客戶端安裝Office 2007或更新版本,因?yàn)閂STO本身就是對Office 2007或更新版本量身定制的。Office 2003由于歷史遺留問題,難以適應(yīng)新架構(gòu)。

      對此需要引導(dǎo)客戶,雖然客戶是上帝,但是如果能說服客戶升級Office,則對用戶體驗(yàn)和項(xiàng)目后期的升級維護(hù)有顯著的好處。

      posted @ 2011-11-04 20:53  江蘇瑞步科技  閱讀(25100)  評論(9)    收藏  舉報
      主站蜘蛛池模板: 97精品人妻系列无码人妻| 丁香五月亚洲综合在线| 亚洲精品一区二区美女| 国产无遮挡性视频免费看| 蜜臀av一区二区三区不卡| 7m精品福利视频导航| 国产播放91色在线观看| 国产精品人一区二区三区| 久久亚洲精品国产精品婷婷| 国产精品久久久久久妇女| 亚洲春色在线视频| 中文字幕无线码中文字幕| 少妇被粗大的猛烈进出69影院一| 亚洲精品宾馆在线精品酒店| 亚洲国产成熟视频在线多多| 高清有码国产一区二区| 久久久精品午夜免费不卡| 久久久精品94久久精品| 91麻豆亚洲国产成人久久| 国产精品理论片在线观看| 午夜免费无码福利视频麻豆| 给我播放片在线观看| 亚洲色欲色欲WWW在线丝| 西青区| 欧美色丁香| 精品蜜臀国产av一区二区| 国产一区精品综亚洲av| 国产va免费精品观看精品| 亚洲 小说区 图片区 都市| 曰韩亚洲av人人夜夜澡人人爽| av午夜福利一片免费看久久| 日韩狼人精品在线观看| 亚洲日韩AV秘 无码一区二区| 色综合天天综合网中文伊| 久久夜色精品国产亚av| 久久亚洲精品情侣| 国产成人无码区免费内射一片色欲| 久久99热只有频精品6狠狠| 奶头好大揉着好爽视频| 韩国午夜理伦三级| 亚洲AV无码成H人动漫无遮挡|