2025年C开发VSTO的入门级教程

C开发VSTO的入门级教程一 VSTO 开发概述 VSTO Visual Studio Tools for Office 就是制作 Office 的 COM 加载项 二 C 语法基础 1 变量的声明和赋值 string s vsto bool b true 2 条件选择语句 int i

大家好,我是讯享网,很高兴认识大家。

一、VSTO开发概述

VSTO(Visual Studio Tools for Office),就是制作Office的COM加载项。

二、C#语法基础

1、变量的声明和赋值

string s= "vsto";

bool b = true;

2、条件选择语句

int i;

            i = -5;

            if (i > 0) {

                MessageBox.Show(i+"是正数");

            }else if(i==0){

                MessageBox.Show(i + "是零");

            }else{

                MessageBox.Show(i + "是负数");

            }

3、循环语句

3.1while循环

int i;

            i = 0;

            while(i<10){

                i+=1;

            }

3.2for循环

            int i;   

            int sum=0;

            for (i=0;i<=10 ;i++ ) {

                sum = sum + i;

            }

3.3foreach语句

int[] arr={2,5,7};

            foreach(int b in arr){

                MessageBox.Show(b.ToString());

            }

4、命名空间

using System.Windows.Forms;

三、窗体和控件设计技术

1、添加新窗体

1.1右击Solution Explorer的项目名称→Add→Windows Form,如下:


讯享网

1.2创建新窗体Form2后,可使用如下语句打开这个窗体:

  Form2 f2 = new Form2();

            f2.Show();

           // f2.ShowDialog();//模态对话框

           // f2.Dispose();//窗体销毁

//this.button1.Visible = this.checkBox1.Checked; //复选框示例

2、为窗体添加菜单

2.1在窗体设计的ToolBox中找到MenuStrip并拖动到窗口中,如下:

2.2选中添加的MenuStrip,即可添加菜单,如下:

3、添加打开窗体对话框

3.1在ToolBox中添加OpenFileDialog控件,如下:

3.2在代码中就可以直接使用OpenFileDialog控件了,如下:

            this.openFileDialog1.ShowDialog();

           this.openFileDialog1.FileName;//这句就可以获取打开对话框选中的文件

4、运行期间动态增删控件

4.1添加文本框示例

            TextBox tx = new TextBox();

            tx.Text = "Text";

            tx.BackColor = Color.Cyan;

            tx.Left = 20;

            tx.Top = 20;

            this.Controls.Add(tx);

5、手动创建控件事件

5.1在ToolBox中拖动一个Button控件到窗体,然后在窗体的Load事件中添加如下代码:

            this.button3.Click+=button3_Click;

5.2编写按钮的响应函数如下:

   private void button3_Click(object sender, EventArgs e)

        {

            MessageBox.Show("ButtonClicked!");

        }

四、类的创建和使用

1、添加可供调用的公共类

1.1右击解决方案→Add→Class,如下:

1.2在class里添加变量及函数如下:

   class Class1

    {

        public int i = 36;

        public string ss = "vsto";

        public void proc()

        {

            MessageBox.Show("From proc");

        }

        public int sum(int a, int b, int c)

        {

            return a + b + c;

        }

    }

1.3在其他地方调用类

//调用类

            Class1 test = new Class1();//类的实例化

            MessageBox.Show(test.i.ToString());

            test.proc();

            this.Text = test.sum(2, 4, 5).ToString();

五、C#操作Excel对象(非VSTO项目)

1、使用Windows窗体程序操作已经打开的Excel。

1.1打开一个Excel待用,然后打开visual studio中新建一个Windows窗体应用程序,如下:

1.2添加Excel引用,如下:

1.3代码中添加Excel引用,如下:

using Excel = Microsoft.Office.Interop.Excel;

1.4在类中定义一个Excel类对象,如下:

1.5代码中获取已经打开的Excel进行操作,如下:

xlsApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

            Excel.Range rg;

            rg=xlsApp.Range["C2:C5"];

            rg.Select();

            rg.Interior.Color = Color.Blue;

this.Text =Convert.ToString(xlsApp.ActiveCell.Value);

1.6遍历Excel各个工作簿,如下:

foreach (Excel.Workbook wbk in xlsApp.Workbooks) {

                MessageBox.Show(wbk.Name);

            }

//以下语句直接获取第一个工作簿:

Excel.Workbook wbk=xlsApp.Workbooks[1];

            MessageBox.Show(wbk.Name);

2、C#处理Excel的事件过程

2.1代码中获取工作簿中工作表并为其添加事件:         

  xlsApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

            Excel.Workbook wbk=xlsApp.Workbooks[1];//获取工作簿

            Excel.Worksheet wst = wbk.Worksheets["Sheet1"];//获取工作表

           // wst.Range["A1:C4"].Value = 56;//设置range中的值

            //为工作表添加事件

            wst.SelectionChange+= new Excel.DocEvents_SelectionChangeEventHandler(MyEvent);

小技巧:查看事件定义,选中事件,右击→转到定义,如下:

2.2添加事件响应函数如下:

private void MyEvent(Excel.Range Target) {

            Target.Merge();

        }

2.3取消事件,如下:

wst.SelectionChange-= new Excel.DocEvents_SelectionChangeEventHandler(MyEvent);

六、创建Office外接程序

1、Excel外接程序

1.1打开visual studio 2010,新建一个Excel2010外接程序如下:

1.2加载项启动时执行的代码,如下:

       public Excel.Application xlsApp;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)

        {

            xlsApp = Globals.ThisAddIn.Application;

            xlsApp.ActiveCell.Value = "VSTO";

        }

2、外接程序添加窗体

2.1右击项目,Add→NewItem,如下:

2.2选择WindowsForm,如下:

2.3在代码中使用这个窗体,如下:

Form1 fm = new Form1();

            fm.Show();

            fm.Text = "MyForm";

2.4窗体中文本框控件的文本发送给当前Excel活动单元格,如下:

using Excel = Microsoft.Office.Interop.Excel;

using Office = Microsoft.Office.Core;

using Microsoft.Office.Tools.Excel;

namespace ExcelAddIn1

{

    public partial class Form1 : Form

    {

        public Excel.Application excelApp;

        public Form1()

        {

            InitializeComponent();

            excelApp = Globals.ThisAddIn.Application;

        }

        private void button1_Click(object sender, EventArgs e)

        {

            excelApp.ActiveCell.Value = this.textBox1.Text;

        }

    }

}

3、C#读写Excel

1、获取当前单元格的地址,如下:

//获取当前单元格地址,也可以使用Address;

            this.textBox1.Text = excelApp.ActiveCell.get_Address();

            //新建工作簿

           Excel.Workbook wbk= excelApp.Workbooks.Add();

        //定义一个Range

           Excel.Range rg;

           rg = excelApp.Range["A1:B6"];

七、外接程序使用Ribbon设计器自定义Office功能区

1、使用Ribbon设计器

1.1项目中添加新项Ribbon,如下所示:

1.2添加后会在ToolBox中出现Ribbon的控件,这样就可以添加控件,也可设置属性,如下:

1.3让功能区独立出来显示,可设置tab的ControlIdType属性为Custom,如下:

2、设置按钮的图标

2.1设置内置按钮的图标,在Button按钮的属性中,设置OfficeImageId为内置图标名称,如下:

2.2设置为自定义图标

(1)设置按钮属性为大图标,即ControlSize为RibbonControlSizeLarge,如下:

(2)将图片添加到资源,双击项目的Resource.resx,如下:

(3)添加现有文件,选择图片进行添加,如下:

(4)然后就可以在Button的Image属性中找到添加的图片,如下:

(5)在Ribbon类中添加按钮的事件如下:

using Excel = Microsoft.Office.Interop.Excel;

using Office = Microsoft.Office.Core;

using Microsoft.Office.Tools.Excel;

namespace ExcelAddIn1

{

    public partial class Ribbon1

    {

        public Excel.Application xlsApp;

        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)

        {

            xlsApp = Globals.ThisAddIn.Application;

        }

        private void button2_Click(object sender, RibbonControlEventArgs e)

        {

            xlsApp.ActiveCell.Value = 0;

        }

    }

}

3、DialogLauncher控件的用法(对话框显示详细设置)

1、为组Group添加DialogLauncher,如下图:

1.1选中Ribbon的Group,点击右箭头,如下:

1.2点击后,就会在group中添加DialogLauncher,如下:

1.3选中Group,设置事件DialogLauncherClick,如下:

八、外接程序使用XML自定义Office功能区

Ribbon设计器的缺陷:无法添加右键菜单、无法添加快速访问工具栏等。

  1. 使用XML的Ribbon

1.1新建一个Excel外接程序,如下:

 

1.2在程序中添加Ribbon(XML),如下:

1.3添加后会有XML文件,如下:

1.4编辑xml,添加一个选项卡两个组,如下:

<tab id="tab1" label="xmlTab">

        <group id="g1" label="xml">

          <button id="button1" label="From XML" onAction="boa" imageMso="B" size="large"/>

        </group>

        <group id="g2" label="xml">

        </group>

      </tab>

1.5将xml对应的Csharp文件(这里是 )中的CreateRibbonExtensibilityObject

复制到外接程序的主CS文件 中,如下:

        protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()

        {

            return new Ribbon2();

        }

1.6在xml对应的cs文件( )中添加回调函数,如下:

      public void boa(Office.IRibbonControl control)

        {

            if (control.Id == "button1") {//若多个按钮的回调函数同名,则根据按钮Id判断是哪个按钮点击          System.Windows.Forms.MessageBox.Show(Globals.ThisAddIn.Application.Version);

            }           

        }

  1. XML定制

2.1打开xml文件,在customUI标签内定制右键菜单、ribbon等,如下:

九、自定义任务窗格的设计

1、创建Excel外接程序项目

1.1打开visual studio 2010,新建Excel外接程序,如下:

1.2在项目中添加用户控件,如下:

1.3添加好后,就可以在这个任务窗格添加控件了,如下:

1.4在外接程序主cs(一般是ThisAddIn.cs)中添加如下代码显示任务窗格:

      UserControl1 uc1;

        Microsoft.Office.Tools.CustomTaskPane ctp1;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)

        {

            uc1 = new UserControl1();//添加窗格后自动生成的类

            ctp1 = Globals.ThisAddIn.CustomTaskPanes.Add(uc1,"VSTOTaskpane");

           

            //初始位置

            ctp1.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionTop;

            ctp1.Visible = true;         

        }

1.5添加多个任务窗格,按照上面步骤添加即可。窗格示图如下:

十、VSTO开发office文档-文档操作窗格

1、创建文档级Excel,添加窗格

1.1打开visual studio 2010,创建一个Excel工作簿项目,如下:

1.2添加一个类如下:

1.3将类设置为公共静态类common,如下:

public static class common

    {

    }

1.4为此类添加office的引用,如下:

using Microsoft.Office.Tools.Excel;

using Microsoft.VisualStudio.Tools.Applications.Runtime;

using Excel = Microsoft.Office.Interop.Excel;

using Office = Microsoft.Office.Core;

1.5在这个类中声明一个窗格、Excel程序、工具栏,如下:

public static Microsoft.Office.Tools.ActionsPane acp;

        public static Office.CommandBar cmb;

        public static Excel.Application ExcelApp;

1.6在ThisWorkbook.cs中的ThisWorkbook_Startup函数中添加代码实现静态类中一些变量的初始化,如下:

common.ExcelApp = this.Application;

            common.acp = this.ActionsPane;

            common.acp.Visible = true;

            common.cmb=common.ExcelApp.CommandBars["task pane"];

1.7控制窗格的位置和显示,代码如下:

  common.cmb.Position = Office.MsoBarPosition.msoBarTop;

            common.cmb.Visible = true;

1.8创建窗格后会默认在视图功能区添加显示操作区,如下:

2、往文档操作窗格窗格中添加用户控件

2.1在项目中添加一个用户控件,如下:

2.2在用户控件中添加按钮等控件,设置控件属性,在控件中操作Excel,如下:

common.ExcelApp.ActiveCell.Value = "UC1";

2.3按上步骤添加多个用户控件,在ThisWorkbook.cs中定义用户控件对象并添加到Excel,如下:

UserControl uc1 = new UserControl1();

        UserControl uc2 = new UserControl2();

common.acp.Controls.Add(uc1);

            common.acp.Controls.Add(uc2);

2.4设置各个用户控件堆叠方向,如下:

common.acp.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop;

2.5实现效果展示如下:

3、添加用户控件数组,添加多个同样的用户控件

3.1定义数组用户存放多个用户控件并添加,如下:

UserControl[] uc1 = new UserControl1[3];

uc1[0] = new UserControl1();

            uc1[1] = new UserControl1();

            uc1[2] = new UserControl1();

            common.acp.Controls.AddRange(uc1);

4、不用用户控件,直接使用代码在窗格中添加文本框

4.1、添加文本框、按钮,如下:

TextBox tb1 = new TextBox();

            tb1.Text = "vsto";

            tb1.BackColor = System.Drawing.Color.Yellow;

            tb1.Left = 20;

            tb1.Top = 30;

            tb1.Multiline = true;

            tb1.Width = 100;

            tb1.Height = 30;

            Button btn = new Button();

            btn.Text = "Button";

            btn.Width = 100;

            btn.Height = 30;

btn.Click+=new EventHandler(btn_Click);

            common.acp.Controls.Add(tb1);

            common.acp.Controls.Add(btn);

4.2添加按钮响应函数如下:

private void btn_Click(object sender, System.EventArgs e) {

            MessageBox.Show((sender as Button).Text);

        }

十一、VSTO外接程序的打包

1、使用Advanced Installer打包外连程序

1.1安装Advanced Installer,新建→加载项→Office Add-in,如下:

1.2前面按提示设置,下一步到“资源文件位置”,“从Visual Studio项目中导入的文件”浏览到sln解决方案,如下:

注意:此时,必须关闭sln这个解决方案。

1.3默认下一步到“加载项细节”,“选择用于创建该加载项的visual studio Tools for Office版本”选择“visual Studio 2010 Microsoft Office开发“,“选择目标的Microsoft Office版本”,选择“Microsoft Office 2010”,“选择目标的Microsoft Office 产品”选择你开发项目的类型,如下:

1.4下一步直到完成,点击“打开输出文件夹”按钮即可看到生成的安装程序,如下:

可交流分享经验,联系:

小讯
上一篇 2025-03-07 11:07
下一篇 2025-02-24 15:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63690.html