创建Excel解决方案_第1页
创建Excel解决方案_第2页
创建Excel解决方案_第3页
创建Excel解决方案_第4页
创建Excel解决方案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VSTO 之旅系列之旅系列 二二 创建 创建 Excel 解决方案解决方案 2013 02 24 18 00 15 0 本专题概要本专题概要 引言引言 创建创建 VSTO 项目项目 Excel 对象模型对象模型 创建创建 Excel 外接程序外接程序 创建创建 Excel 文档级自定义项文档级自定义项 小结小结 一 引言一 引言 也许很多朋友都没有听说过 VSTO 这个东西的 本人之前也同样也不知道的 但 是由于工作的原因接触了这方面 由于 VSTO 方面国内的资料比较少 本人刚开始学习的 时候都是参考 MSDN 的 但是上面很多资料都是英文的 可能学习起来会比较慢点 所以 本人把最近一段时间学习的内容记录下来 一来是作为一个巩固的学习笔记 二来希望这 些博客可以帮助一些刚接触 VSTO 的朋友可以有所借鉴 讲了这么多废话 指的上面一些过渡的话 到底 VSTO 到底是什么呢 这里我简单 的概括下的 VSTO 是微软推出一种对是微软推出一种对 Office 产品进行操作的技术 其中提供了一些类产品进行操作的技术 其中提供了一些类 库来让开发人员可以更方便地开发出库来让开发人员可以更方便地开发出 Office 的解决方案的解决方案 即对即对 Word Excel Outlook 实实 现一些扩展功能现一些扩展功能 对于 VSTO 的更多介绍大家可以参看该系列的第一篇博文 在这个专 题将为大家介绍下 如何创建 Excel 的解决方案 二 创建二 创建 VSTO 项目项目 对于刚接触 VSTO 的朋友来说 可能根本就不知道如何去创建一个 VSTO 的项目的 相信通过这个部分大家就会觉得是如此的简单 环境的搭建环境的搭建 进行 VSTO 开发的环境搭建是相当简单的 只需要安装 Visual Studio 2010 当然安装 VS2010 的时候在安装组件中必须勾选 VSTO 选择 这个选项是默认勾上的 大家可以在安 装 VS 的时候留意下 和 Office 2010 就可以 当然 VS2008 和 Office 2007 的安装也可以完 成环境的搭建 创建第一个创建第一个 Excel 工程来开始我们的工程来开始我们的 VSTO 之旅之旅 第一步 选择新建项目 Visual C Office 2010 然后选择 Excel 2010 外接程序 如何是英文版即 Excel 2010 Add in 如下图 从图中可以看到 除了外接程序外 还有 Excel 模板和 Excel 文档这两种项目类 型 他们的区别是 外接程序是应用程序级别的 即如果你创建了 Excel 2010 外接程序 该程序对所有 Excel 应用都是有效的 因为每次 Excel 的启动过程都会加载该插件 即该程 序 大家肯定留意到当我们启动 Excel 或 Word 的时候都会加载一些加载项 其实这些加 载项就是属于外接程序 即插件 启动过程见下面图 而 文档和模板项目 都是属于文档级别的程序 该程序只对当前文档和模板有 效 创建这两种类型的项目 会在项目的工程目录下会生成一个 word 文件 文档项目会生 成一个 Document1 docx 文件 模板项目会生成一个 Document1 dotx 文件 创建成功之后 外接程序的项目文件结构见下图 从图中可以看出 刚创建的 VSTO 外接程序都只有一个 ThisAddIn cs 文件 该文 件即是一个宿主项 更多关于宿主项和宿主控件的内容可以查看该系列的第一篇博文 我 们可以通过这个文件来对 Excel 对象进行访问 同时该类中有 ThisAddIn Startup 和 ThisAddIn Shutdown 两个方法 从两个方法中命名中可以知道 如果你的代码想在加载 外接程序时运行的话 就放把代码放在 ThisAddIn Startup 方法内容 如果你想在外接程 序卸载的时候运行你的代码 就把这些代码放在 ThisAddIn Shutdown 方法内 三 三 Excel 对象模型对象模型 要开发 Excel 的项目 就自然少不了对 Excel 对象模型的了解了 只有了解 Excel 对 象模型 这样才能更好地对 Excel 进行处理 下面先给出一张 Excel 对象模型的图 下面就具体对上图中的各个对象做一个简单的介绍 Application 对象 Excel 中的 Application 对象表示 Excel 应用程序 该对象是所有 Excel 对象的根 你可以通过 Application 对象 获取到其他对象 在外接程序中 我们可 以通过下面的方式来获得 Application 对象 Globals ThisAddIn Application Workbooks 对象代表 Workbook 对象的集合 而 Workbook 对象表示 Excel 中的单个 工作簿 我们可以通过下面的方式来获得工作簿对象 Globals ThisAddIn Application ThisWorkbook Worksheets 对象代表 Worksheet 对象的集合 而 Worksheet 代表的就是 Excel 中的 表 下面的代码可以获得 Worksheet 对象 Globals ThisAddIn Application ThisWorkbook ActiveSheet 激活的表 每次打开一个 Excel 文件 都是表一即 sheet1 被激活 所以通过该代码就说获得表一对象 Range 对象代表一个范围 是操作 Excel 文档最常用的对象 它可以表示为一个单元 格 一行 一列或多个单元格块 可以连续 也可以不连续 的单元格选定范围 甚至多 个工作表中的一组单元格 可能上面的解释过于枯燥 相信大家通过下图可以更好地理解 Excel 中的各个对象 四 创建四 创建 Excel 外接程序外接程序 介绍完了 Excel 对象模型之后 我们就可以利用这些对象来对 Excel 文档进行操作了 下面就创建一个简单的 Excel 外接程序的 首先我们模拟一个需求 大多说软件在使用时都会弹出一个欢迎界面 这样我们就创 建一个外接程序 每次打开 Excel 文件时弹出一个欢迎界面 退出时弹出 谢谢使用 界面 我们只需要在上面的创建工程中介入下面的代码即可 using System Windows Forms namespace MyExcelAddIn1 public partial class ThisAddIn private void ThisAddIn Startup object sender System EventArgs e 因为欢迎使用窗口要 在打开 Excel 的时候弹出 所以把下面代码放在 Startup 方法内 MessageBox Show 欢迎使用 Microsoft Excel private void ThisAddIn Shutdown object sender System EventArgs e 在退出 Excel 的时候弹出谢谢使用窗口 所以把下面的代码放在 Shutdown 方法内 MessageBox Show 谢谢使用 region VSTO generated code Required method for Designer support do not modify the contents of this method with the code editor private void InternalStartup this Startup new System EventHandler ThisAddIn Startup this Shutdown new System EventHandler ThisAddIn Shutdown endregion 这样 我们就完成了上面简单的一个模拟需求了 下面让我们按 F5 来测试下效果吧 按 F5 运行该程序时 首先打开一个 Excel 之后 一个欢迎界面就会弹出 点击 Excel 窗口上的 X 按钮时 就会弹出一个 谢谢使用 的窗口 效果如下 点击 Ok 按钮之后才会正常退出 Excel 这样就完成了一个简单的 Excel 外接程序了 上面提到过外接程序是应用程序级别的 所以当你每次打开 Excel 的时候都会有这样的一 个欢迎界面和关闭 Excel 时都有一个 谢谢使用 窗口 有些朋友想问了 如果我想卸载这个 插件怎么办呢 方法很简单 只需要右键你的解决方案 清理 这样可以了 另外你也 可以从开发工具选项卡 COM 插件 在弹出的窗口中选择你自定义的插件 再按下移 除按钮 具体步骤见下图 五 创建五 创建 Excel 文档级自定义项文档级自定义项 介绍完了创建 Excel 外接程序之后 下面看看如何创建一个文档级的项目 1 新建一个 Excel 2010 Workbook 即 Excel 工作簿 项目 2 单击 OK 按钮 在下面的窗口中单击 OK 按钮 3 在第一创建 Excel 工作簿项目是会弹出下面的一个窗口 窗口意思为 是否允许创 建的项目访问 VBA 项目系统 此时我们只需要点击 Ok 就完成了 Excel 工作簿项目的创 建 现在我们来模拟一个需求 比如现在有一个成绩单工作表 我们希望获得各科目不 及格同学的名字 此时我们只需要在上面创建的工作簿项目中添加一个 ComboBox 一个 Button 一个 textbox 在 button 的 Click 事件中添加下面的代码 找出各科目不及格同学的名字 private void btnSearch Click object sender EventArgs e 清 除 textbox 中的内容 txtResult Clear 从复选 框中获得选择的科目索引 int subjectIndex cbxsubjects SelectedIndex if subjectIndex 1 MessageBox Show 请先选择一个科目 return 获得选择的科目名称 string subjectName cbxsubjects SelectedItem ToString 获得工作表对象 Excel Worksheet worksheet Excel Worksheet Globals ThisWorkbook ActiveSheet for int row 2 row worksheet UsedRange Rows Count 1 row Excel Range rng Excel Range worksheet Cells row subjectIndex 2 Excel Range rng1 Excel Range worksheet Cells row 1 if rng Value新建项 在弹出的添加新项窗口中选择 功能区 可 视化设计器 2 输入名称之后单击添加按钮 3 设计选项卡 UI 界面 本例子中添加了一个 toggleButton 通过上面的步骤就可以创建一个自定义选项卡 这种方式创建的选项卡在 Excel 项目 针对的是外接 Excel 项目类型 启动的时候就会被加载 下面具体介绍了如何设计选项卡 即 Ribbon 1 设计设计 RibbonTab 首先把 首先把 ControlIdType 属性设置为属性设置为 Custom 不然我们设计 不然我们设计 的的 RibbonGroup 部分将会在加载项选项卡下 然后设置部分将会在加载项选项卡下 然后设置 Name 为为 HelpTab 这样我们创这样我们创 建的选项卡才会成为一个新的选项卡 如果我们想把建的选项卡才会成为一个新的选项卡 如果我们想把 ToggleButton 放在放在 Home 选项卡选项卡 下显示 此时我们只需要把下显示 此时我们只需要把 ControlIdType 设置为设置为 Office 然后把 然后把 OfficeId 设置为设置为 TabHome 具体情况大家可以测试看看的 关于具体情况大家可以测试看看的 关于 Office 中内置的中内置的 Control ID 列表 大列表 大 家可以从下面这个链接下载 家可以从下面这个链接下载 2007 Office System Document Lists of Control IDs 2 从工具箱中拖出一个 ToggleButton 把 Label 属性设置为 Help 并把 ControlSize 属性设置为 RibbonControlSizeLarge 3 双击 Help ToggleButton 按钮 实现它的单击事件 帮助选项卡中 toggleButton 的单击事件 private void toggleHelpBtn Click object sender RibbonControlEventArgs e 通过 toggleHelpButton 的选中状态来控制帮助任务栏的显示和隐藏 Globals ThisAddIn helpTaskPane Visible toggleHelpBtn Checked 通过上面的三步也就完成了一个 Ribbon 的创建了 当我们创建好一个 Ribbon 之 后 我们可以通过我们自定义的 Ribbon 下的按钮来显示 隐藏我们的任务窗体 但是到这 里 Ribbon 的开发并没有结束 此时还有一个问题就是 当我们点击 Excel help 右上 角的 X 按钮关闭时 我们 Ribbon 下的按钮状态也要跟着更变 大家可以测试 当我们关闭 Word 中的导航任务窗体时 试图下的 导航窗格 复选框 也会跟着改变 此时我们就需要 实现 点击关闭按钮与 Help 按钮状态同步的功能的 此时我们只需要对只需要对 TaskPane 的的 VisibleChanged 事件进行处理就可以事件进行处理就可以 因为关闭任务窗体就会触发该事件 所以只需要 把同步状态的代码放在该事件就可以了 具体代码如下 定义一个任务窗体 internal Microsoft Office Tools CustomTaskPane helpTaskPane private void ThisAddIn Startup object sender System EventArgs e 把自定义窗体添加到 CustomTaskPanes 集合中 ExcelHelp 是一个自定义控件类 helpTaskPane Globals ThisAddIn CustomTaskPanes Add new ExcelHelp Excel Help 使任务窗体可见 helpTaskPane Visible true 通过 DockPosition 属性来 控制任务窗体的停靠位置 设置为 MsoCTPDockPosition msoCTPDockPositionRight 这个代表停靠到右边 这个值 也是默认值 helpTaskPane DockPosition MsoCTPDockPosition msoCTPDockPositionRight 当用户点击当用户点击 Excel Excel help help 右上角的右上角的 X X 按钮关闭时 我们需要同步选项卡上按钮关闭时 我们需要同步选项卡上 buttonbutton 的状态的状态 helpTaskPane VisibleChanged new EventHandler helpTaskPane VisibleChanged 添加上下文菜 单 AddToCellMenu private void ThisAddIn Shutdown object sender System EventArgs e 用户点击用户点击 Excel Excel Help Help 侧边栏右上角的侧边栏右上角的 X X 按钮关闭它时按钮关闭它时 我们我们 需要正确同步需要正确同步 帮助帮助 按钮的状态按钮的状态 我们可以通过处理我们可以通过处理 Excel Excel Help Help 侧边栏的侧边栏的 VisualChangedVisualChanged 事件完成事件完成 privateprivate voidvoid helpTaskPane VisibleChanged objecthelpTaskPane VisibleChanged object sender sender EventArgsEventArgs e e 获得获得 HelpHelp RibbonRibbon 对象对象 HelpHelp helpRibbonhelpRibbon Globals Ribbons GetRibbon Globals Ribbons GetRibbon 同步同步 HelpHelp RibbonRibbon 下的下的 帮助帮助 按钮的状态按钮的状态 helpRibbon toggleHelpBtn CheckedhelpRibbon toggleHelpBtn Checked Globals ThisAddIn helpTaskPane Visible Globals ThisAddIn helpTaskPane Visible 运行效果图为 四 自定义上下文菜单四 自定义上下文菜单 看完上面两部分的实现之后 我在学习的过程中又想 能不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论