• 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();

    }

  • 相关阅读:
    Linux基础操作
    MySQL基础常用指令
    String什么时候创建一个新对象?
    HashMap源码浅析
    LinkList源码浅析
    ArrayList源码浅析
    如何解决syntax error near unexpected token `fi'
    如何解决The request sent by the client was syntactically incorrect.
    Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> ajaxTest in servlet mapping
    CLUSTER cluster is down,redis报错
  • 原文地址:https://www.cnblogs.com/scwyh/p/2797744.html
Copyright © 2020-2023  润新知