C#开发VSTO的入门级教程

一、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下一步直到完成,点击“打开输出文件夹”按钮即可看到生成的安装程序,如下:

可交流分享经验,联系qq:329876601

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSTO (Visual Studio Tools for Office) 是一种用于开发 Microsoft Office 解决方案的编程框架。VSTO 提供了一种集成开发环境,使开发者可以使用编程语言(如C#或VB.NET)来创建自定义的 Office 应用程序和插件。 VSTO 开发中级教程 PDF 是一本介绍如何使用 VSTO 框架进行 Office 解决方案开发教程。这本教程通常面向那些有一定基础的开发者,希望进一步学习如何创建功能强大的 Office 应用程序。 在这本教程中,你将学习如何使用 VSTO 框架来自定义 Office 应用程序的外观和行为。你将学习如何创建自定义的 Ribbon 面板,用于添加功能按钮和菜单项,并为其添加逻辑代码。你还将学习如何向 Office 应用程序添加自定义任务窗格,并与其他 Office 应用程序(如 Outlook)进行集成。 此外,教程还会提供关于如何使用 VSTO 开发定制邮件合并功能、自动化 Excel 数据处理以及与 PowerPoint 和 Word 文档的交互等实用技巧和示例。教程中会介绍如何使用 VSTO 提供的各种对象模型和 API,以及如何利用 Office 应用程序提供的丰富功能和工具。 总的来说,VSTO 开发中级教程 PDF 将帮助你深入了解 VSTO 框架,并提供实用的示例和技巧,让你能够创建出功能强大、符合个性化需求的 Office 解决方案。如果你已经具备一定的 VSTO 开发经验,这本教程将进一步提升你的开发能力,使你能够更加高效地开发 Office 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值