现在的位置: 首页 > 综合 > 正文

VSTO:使用工作簿

2013年07月29日 ⁄ 综合 ⁄ 共 3535字 ⁄ 字号 评论关闭

一、新建工作簿

以编程方式创建工作簿时,所创建的将是一个本机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();

}

抱歉!评论已关闭.