zoukankan      html  css  js  c++  java
  • VSTO:使用工作簿

    一、新建工作簿

    以编程方式创建工作簿时,所创建的将是一个本机Microsoft.Office.Interop.Excel.Workbook对象,而不是Microsoft.Office.Tools.Excel.Workbook宿主项。

    1.单击工作表中的按钮新建工作簿

    在工作簿Sheet1中新建一个按钮,在按钮的单击事件中编写以下代码新建一个工作簿:

    using Excel=Microsoft.Office.Interop.Excel;

    Excel.Workbook newWorkbook = this.Application.Workbooks.Add();

    newWorkbook.Application.Caption ="新建工作簿";

    2.单击功能区按钮新建工作簿

    Ribbon中添加一个按钮,编写以下代码可新建一个工作簿:

    Excel.Workbook wb =Globals.ThisWorkbook.Application.Workbooks.Add();

    wb.Application.Caption ="test";

    二、打开工作簿

    Microsoft Office Excel 中的 Workbooks 集合使您能够使用所有打开的工作簿和打开工作簿。

    使用 Workbooks 集合的 Open 方法,传入工作簿的路径。

    Ribbon中添加一个按钮,编写以下代码可打开一个工作簿:

    Excel.Workbook wb =Globals.ThisWorkbook.Application.Workbooks.Open(@"c:\test.xlsx");

    三、关闭工作簿

    调用ThisWorkbook.Close方法来关闭与自定义项关联的工作簿。

    Globals.ThisWorkbook.Close();

    四、保存工作簿

    可通过多种方式保存工作簿。

    如果工作簿以前没有保存过,则应该通过指定一个路径来保存工作簿。如果没有显式路径,Excel会使用创建文件时为其指定的名称将文件保存在当前文件夹中。

    还可以保存工作簿的副本,而不修改内存中打开的工作簿。

    1.在当前位置保存工作簿

    调用ThisWorkbook类的Save方法可保存工作簿。

    2.另存工作簿

    调用ThisWorkbook类的SaveAs方法使用新路径保存工作簿。

    this.SaveAs(@"C:\Book1.xml")

    3.保存工作簿副本

    调用ThisWorkbook类的SaveCopyAs方法可以将工作簿的副本保存到文件中,而不修改内存中打开的工作簿。当需要创建备份副本而不修改工作簿的位置时,此方法十分有用。

    在保存工作簿时,取消任何保存或复制工作簿的方法将在代码中引发运行时错误。例如,如果过程调用了SaveAs方法但未禁用Excel的提示,用户在得到提示时单击了“取消”时,Excel就会引发一个运行时错误,应该在程序中捕获该错误。

    五、激活工作簿

    Workbooks 集合的Activate方法激活一个Excel工作簿并选择该工作簿中的第一个工作表。

    1.用Activate方法激活工作簿

    使用Workbooks集合的Activate方法可激活工作簿。

    ((Microsoft.Office.Interop.Excel._Workbook)this.Application.Workbooks[1]).Activate();

    2.引用工作簿

    可以使用整数(指示集合中的位置)或工作簿名称将索引编入Workbooks集合。但是,如果要通过名称引用工作簿,则必须使用标题栏中显示的名称,在保存文件之前,该名称将不包括文件扩展名。

    可使用工作簿的位置号或名称引用各个工作簿。如以下代码:

    Excel.Workbook wb = this.Application.Workbooks[1];

    // Before Book1 is saved:

    wb = this.Application.Workbooks["Book1"];

    // After Book1 is saved:

    wb = this.Application.Workbooks["Book1.xls"];

     

    六、保护工作簿

    可以保护Excel工作簿,使用户无法添加或删除工作表,并且还可以通过编程方式取消对工作簿的保护。可以选择指定一个密码,指示是否希望保护该结构(使用户无法移动表)以及指示是否希望保护工作簿的窗口。

    1.保护工作簿

    保护工作簿并不会阻止用户编辑单元格。若要保护数据,必须保护工作表。

    下面的代码示例使用变量来设置密码。

    调用工作簿的Protect方法并包含一个密码。

    this.Protect(getPasswordFromUser, missing, missing);

    必须在ThisWorkbook类中运行此示例,而不要在工作表类中运行。

    2.取消工作簿保护

    调用 Unprotect方法取消工作簿保护,如果需要,还需传递一个密码。

    this.Unprotect(getPasswordFromUser);

    七、设置和清除工作簿密码

    给工作簿设置一个密码可以限制其他用户对工作簿的访问。

    下面的示例设置工作簿的密码。

    ThisWorkbook的密码属性设置为由用户提供的字符串。

    private void SetPassword()

    {

        string password =this.Application.InputBox("请输入密码:",   missing, missing,missing, missing, missing, missing, missing).ToString();

        string confirmPassword =this.Application.InputBox("请再输一次密码:",  missing, missing,missing, missing, missing, missing, missing).ToString();

        if (password !=confirmPassword)

       {

            MessageBox.Show("两次输入的密码不同!");

            Globals.ThisWorkbook.Password = "";

       }

      else

      {

           Globals.ThisWorkbook.Password= password;

      }

    }

    若要清除密码,只需将Password属性设置为空字符串即可。

    八、获取和设置工作簿的默认文件路径

    使用_Application对象的DefaultFilePath属性可获取默认路径。下面的代码显示当前默认路径。

    System.Windows.Forms.MessageBox.Show(this.Application.DefaultFilePath);

    Application对象的DefaultFilePath属性赋予一个字符串值,可设置工作簿的默认路径。以下代码设置工作簿保存路径为C:\temp

    this.Application.DefaultFilePath = @"C:\temp";

    九、最近使用的工作簿文件

    RecentFiles属性返回一个集合,该集合包含Excel最近使用的文件列表中出现的所有文件名。列表长度因用户选择要保留的文件数而异。

    以下代码遍历最近使用的文件的列表,并将名称显示在相对于工作表单元格中。

    Excel.Range rng = this.Application.get_Range("A1",missing);

    for(int i=1; i<=this.Application.RecentFiles.Count; i++)

    {

       rng.get_Offset(i -1,0).Value2 = this.Application.RecentFiles.get_Item(i).Name;

    }

    十、显示打开对话框

    下面的代码提示用户在Excel中打开一个新工作簿。它设置属性以允许多重选择、清除可用筛选器的列表,并添加两个新筛选器。然后,该代码将调用FileDialog对象Execute方法,以打开请求的文件。

    Microsoft.Office.Core.FileDialog fd =this.Application.get_FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogOpen);

    fd.AllowMultiSelect = true;

    fd.Filters.Clear();

    fd.Filters.Add("Excel Files", "*.xls;*.xlw",missing);

    fd.Filters.Add("All Files", "*.*", missing);

    if (fd.Show() != 0)

    {

       fd.Execute();

    }

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/scwyh/p/2797744.html
Copyright © 2011-2022 走看看