VSTO:使用工作簿

摘要:
在按钮的单击事件中编写以下代码以创建新工作簿:3。关闭工作簿调用ThisWorkbook.Close方法关闭与UDF关联的工作簿。Excel使用创建文件时指定的名称将文件保存在当前文件夹中。1。将工作簿保存在当前位置调用ThisWorkbook类的Save方法保存工作簿。2.保存工作簿。调用ThisWorkbook类的SaveAs方法以使用新路径保存工作簿。

一、新建工作簿

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

}

免责声明:文章转载自《VSTO:使用工作簿》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇拖放排序插件Sortable.js 兼容好及功能全个人觉得比dragula.js 好的多JPA学习(二、JPA_基本注解)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webstorm中配置过visualsvn,后面做更改要更换authentication realm的解决办法

找这个找了好久,一直改不过来,终于找到了解决办法 首先,在提交代码时提示: 但是我的authentication realm已经时这个了,并且账号和密码也改了,所以要更改authentication realm。 使用的时候要安装TortoiseSVN,安装好之后数遍右键会提示相关的操作;在空白处右键,选择TortoiseSVN-重新定位,会弹出下面这个...

Word2013对公式处理:样式、自动编号、交叉引用

因快写毕业论文,专门研究了一下Word2013对公式的处理,有一点小心得,记在这里。 文章中公式展示的预期效果是:公式居中,尾端有编号,同时在文章中可以实现引用。实现该效果有很多方法,这里就说一种,其他的方法可以参照其他朋友的博客,都写的很详细。 公式样式设置 为了对公式的统一操作,我们为它建立一个新的样式:在"开始"面版,单机"样式"模块右下方的那个...

分享在winform下实现左右布局多窗口界面

在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform、WPF中实现其实也很容易,我这里就分享一个:在winform下实现左右布局多窗口界面。 我这里说的多窗口是指一个父窗口包含多个子窗口,在winform中实现这种效果很简单,即将某个窗口的IsMdiContainer设为true,然后将其它...

HTML本地存储和离线存储

本地存储和离线存储 课程介绍 1.本地存储——Web Storage 2.本地存储——IndexedDB 3.本地存储的扩展介绍 4.离线存储——app cache 5.总结 Cookie的局限性 1.存储大小限制,仅4kb左右 2.单个域名下的数量限制,50个左右 3.污染请求头,浪费流量 localStorage和sessionStorage 1.相同...

【转】js实现另存为的方法

示例代码: <input   type=button   value=另存为   onclick="mm1()">   <iframe   width=0   height=0   frameborder=0   name=hrong   style="display:   none"></iframe>      ...

qt动画入门

Qt-4.6新增了Animation Framework(动画框架),让我们可以方便的写一些生动的程序。不必像曾经的版本号一样,全部的控件都枯燥的呆在伟大光荣的QLayout里,或许它们可以唱个歌,跳个舞。     所谓动画就是在一个时间段内的不同一时候间点有不同的状态。仅仅要定义好这样状态。实现动画就是水到渠成的事情。当然做这件事情,最好用的就是状态...