图书目录

目录

第1章 VSTO开发综述  1 

1.1 Office开发方式的选择 ? 1 

1.1.1 VBA ? 2 

1.1.2 VB6 ? 2 

1.1.3 VSTO ? 2 

1.1.4 用户自定义函数的开发 ? 3 

1.2 VB.NET语言概述 ? 4 

1.2.1 VB.NET和 VB6的关系 ? 4 

1.2.2 VB.NET和 VB6程序结构的差别  4 

1.3 Office界面方案的选择 ? 5 

1.3.1 customUI设计  6 

1.3.2 工具栏设计  6 

1.3.3 任务窗格设计 ? 7 

1.4 VSTO开发环境的选择 ? 8 

1.5 小结  8

第2章 Visual Studio的安装和使用 ? 9 

2.1 Visual Studio 2017的安装 ? 9 

2.1.1 安装引导程序的下载  9 

2.1.2 系统需求和安装环境确认 ?11 

2.1.3 Visual Studio 2007 Professional的安装 11 

2.1.4 Visual Studio的启动 15 

2.1.5 Visual Studio的修复和卸载 ?15 

2.2 项目管理 ?16 

2.2.1 创建 VSTO项目 ?17 

2.2.2 项目模板 18 

2.2.3 创建时保存新项目 19 

2.2.4 与项目有关的快捷键 ?20 

2.3 Visual Studio的选项设置 ?20 

2.3.1 更改默认开发语言 21 

2.3.2 更改 Visual Studio界面语言 22 

2.3.3 更改代码风格 23 

2.4 代码编写技巧 ?24 

2.4.1 代码的自动完成 ?24 

2.4.2 智能提示 24 

2.4.3 查看定义 24 

2.4.4 变量的重命名 25 

2.4.5 查找和替换 ?26 

2.5 最常用的对话框 27 

2.6 小结 ?27

第3章 VB.NET语言基础 29 

3.1 VB.NET程序的编译和运行 30 

3.1.1 使用 vbc.exe编译程序 ?30

3.1.2 第一个 VB.NET程序 ?31 

3.1.3 使用 Visual Studio进行 VB.NET编程 ?32 

3.2 VB.NET语法基础 34 

3.2.1 变量、常量和赋值 35 

3.2.2 字符和字符串 36 

3.2.3 日期时间类型 36 

3.2.4 整数类型 40 

3.2.5 布尔和逻辑运算 ?41 

3.2.6 新增赋值运算符 ?43 

3.2.7 信息输入和结果输出 ?43 

3.2.8 输入和输出对话框 45 

3.3 类型的判断和转换 ?49 

3.3.1 编译选项设置 49 

3.3.2 判断数据、变量的类型 50 

3.3.3 类型转换 51 

3.4 String.Format方法 52 

3.4.1 对号入座 52 

3.4.2 格式化数字 ?53 

3.4.3 格式化日期和时间 55 

3.5 ToString方法 56 

3.6 数组 ?56 

3.6.1 一维数组 57 

3.6.2 数组的排序和倒序 60 

3.6.3 数组的去重 ?60 

3.6.4 数组统计 61 

3.6.5 两个数组的集合运算 ?61 

3.6.6 一维数组与字符串相互转换 62 

3.6.7 二维数组 63 

3.6.8 数组维数的判断 ?63 

3.7 条件选择 ?64 

3.7.1 If...Else结构 64 

3.7.2 Select...Case结构 65 

3.8 循环结构 ?66 

3.8.1 Do...Loop循环 ?66 

3.8.2 While循环 67 

3.8.3 For循环 ?67 

3.8.4 For...Each循环 ?68 

3.9 匿名用法 ?69 

3.9.1 匿名类 ?69 

3.9.2 匿名过程 70 

3.9.3 匿名函数 71 

3.10 List泛型类 ?71 

3.10.1 泛型类与数组的转换 72 

3.10.2 数组的过滤?72 

3.10.3 泛型类的过滤 ?73 

3.11 异常处理 73 

3.11.1 异常原因分析 ?74 

3.11.2 异常分类处理 ?74 

3.12 项目组织 76 

3.12.1 项目中添加文件 76 

3.12.2 调用 Module中的内容 77 

3.12.3 类的创建和使用 78 

3.13 项目的引用管理 ?79 

3.13.1 外部引用的添加和移除 ?79 

3.13.2 使用 Imports指令 81 

3.14 小结 ?82

第4章 VB.NET窗体应用程序 83 

4.1 窗体 ?83 

4.1.1 窗体的创建和显示 83 

4.1.2 窗体的添加 ?85 

4.1.3 自动创建窗体 87 

4.1.4 窗体的隐藏和卸载 88 

4.2 控件的属性 89 

4.2.1 常规属性设置 89 

4.2.2 改变控件的位置和大小 91 

4.2.3 通过 Anchor属性设置控件基准点 ?92 

4.2.4 通过 Dock属性设置控件的扩展 93 

4.2.5 使用 Splitter控件手动调整控件分布 94 

4.3 控件的事件 95 

4.3.1 使用 WithEvents为控件添加事件 95 

4.3.2 使用 AddHandler和RemoveHandler添加和移除事件 ?97 

4.3.3 按键事件  100 

4.3.4 窗体的 KeyPreview属性 ? 101 

4.3.5 鼠标单击事件  102 

4.3.6 调用事件过程  103 

4.4 专业窗体设计 ? 104 

4.4.1 主菜单的设计  104 

4.4.2 打开和保存对话框  105 

4.4.3 创建右键快捷菜单  107 

4.4.4 创建工具栏 ? 109 

4.4.5 创建状态栏 ? 110 

4.5 自动添加和删除控件  111 

4.5.1 自动添加控件  111 

4.5.2 自动删除控件  112 

4.5.3 自动添加控件数组  112 

4.6 小结 ? 114

第5章 VB.NET控件技术  115 

5.1 文本编辑类控件  115 

5.1.1 TextBox  115 

5.1.2 RichTextBox  116 

5.1.3 MaskedTextBox  117 

5.2 标签类控件  118 

5.2.1 Label ? 119 

5.2.2 LinkLabel ? 119 

5.3 选择类控件  120 

5.3.1 CheckBox ? 120

5.3.2 RadioButton  121 

5.4 列表条目类控件  121 

5.4.1 ComboBox  121 

5.4.2 ListBox  122 

5.4.3 CheckedListBox  124 

5.5 数值调节类控件  125 

5.5.1 HScrollBar和 VScrollBar  125 

5.5.2 TrackBar ? 126 

5.5.3 NumericUpDown  126 

5.5.4 DomainUpDown ? 127 

5.6 状态提示类控件  128 

5.6.1 NotifyIcon ? 128 

5.6.2 ProgressBar ? 128 

5.6.3 ToolTip  129 

5.7 图片类控件  130 

5.7.1 PictureBox  130 

5.7.2 ImageList  130 

5.8 日期时间类控件  132 

5.8.1 DateTimePicker  132 

5.8.2 Timer ? 133 

5.8.3 Stopwatch对象? 134 

5.9 其他控件 ? 135 

5.9.1 WebBrowser  135 

5.9.2 WindowsMediaPlayer ? 136 

5.9.3 PropertyGrid  137 

5.9.4 FileSystemWatcher  139 

5.10 表格控件 DataGridView 141 

5.10.1 显示Access数据库中的查询结果  141 

5.10.2 显示DataTable对象中的数据 ? 143 

5.10.3 处理选中的行 ? 144 

5.10.4 导出DataGridView数据到 Excel ? 145 

5.11 列表控件 ListView  146 

5.11.1 显示ADODB查询 Access的结果  148 

5.11.2 处理选中的行 ? 149 

5.11.3 导出 ListView数据到 Excel  150 

5.12 树状控件 TreeView ? 151 

5.12.1 节点的添加和移除 ? 152 

5.12.2 处理选中的节点  154 

5.12.3 节点的遍历 154 

5.13 选项卡控件 TabControl  155 

5.13.1 编辑选项卡 155 

5.13.2 处理选中的选项卡 ? 156 

5.13.3 显示和隐藏选项卡 ? 157 

5.13.4 动态增删选项卡  158 

5.13.5 遍历选项卡 158 

5.14 图表控件 Chart  159 

5.14.1 图表的数据源 ? 160 

5.14.2 图表的标题 164 

5.14.3 图表的图例 165 

5.14.4 数据系列  166 

5.14.5 图表区域  167 

5.15 小结 ? 169

第6章 VB.NET GDI+编程基础  170 

6.1 图形对象 ? 170 

6.1.1 绘图方法  171 

6.1.2 坐标系 ? 171 

6.2 结构数组 ? 172 

6.2.1 画笔  172 

6.2.2 画刷  173 

6.2.3 点和点数组 ? 173 

6.2.4 矩形框和矩形框数组 ? 173 

6.3 绘图实例分析 ? 174 

6.3.1 直线、多义线、多边形的绘制  174 

6.3.2 矩形的绘制 ? 175 

6.3.3 椭圆、弧线、扇形的绘制 ? 176 

6.3.4 实心填充图形的绘制 ? 177 

6.3.5 文字的绘制 ? 178 

6.3.6 利用 Paint事件自动重绘 ? 179 

6.4 坐标系变换  180 

6.4.1 坐标系平移 ? 180 

6.4.2 坐标系旋转 ? 181 

6.4.3 坐标系缩放 ? 181 

6.5 小结 ? 182

第7章 VB.NET进阶技术  183 

7.1 使用 StringBuilder  183 

7.1.1 追加字符串 ? 184 

7.1.2 插入、移除和替换操作  185 

7.2 使用字典 ? 186 

7.2.1 利用字典去除重复项 ? 186 

7.2.2 利用字典实现查询功能  187 

7.2.3 字典的遍历 ? 188 

7.3 使用哈希表  189 

7.3.1 添加和移除键值对  189 

7.3.2 遍历键值对 ? 190 

7.4 使用正则表达式  190 

7.4.1 验证  191 

7.4.2 查找  192 

7.4.3 替换  193 

7.4.4 分隔  194 

7.4.5 正则表达式选项 ? 194 

7.4.6 直接使用正则表达式 ? 195 

7.4.7 分组  196 

7.5 目录和文件操作  197

7.5.1 使用 DriveInfo获取磁盘驱动器

7.5.2 使用 Directory.GetDirectories获取子文件夹  199 

7.5.3 使用 Directory.GetFiles获取文件夹下所有文件  200 

7.5.4 使用 DirectoryInfo获取文件夹信息  200 

7.5.5 使用 FileInfo获取文件信息 ? 200 

7.5.6 使用 Path进行路径操作 ? 201 

7.5.7 Directory类的方法  201 

7.5.8 File类的方法 ? 202 

7.6 文本文件的读写  202 

7.6.1 读取文件内容  202 

7.6.2 写入和追加内容到文本文件  204 

7.6.3 使用 StreamWriter和 StreamReader读写文本文件  204 

7.7 MD5加密  205 

7.7.1 字符串的 MD5加密  206 

7.7.2 文件的 MD5计算 ? 206 

7.8 GUID的生成  207 

7.9 XML文件的读写 ? 208 

7.9.1 使用 XMLWriter创建 XML文件 ? 209 

7.9.2 使用 XMLReader读取 XML内容 ? 211 

7.9.3 使用 XML DOM创建 XML ? 211 

7.9.4 使用 XML DOM读取 XML文件 ? 213 

7.10 使用 API函数 ? 213 

7.10.1 API函数的声明  214 

7.10.2 API结构类型的声明  214 

7.10.3 API常量的声明  215 

7.10.4 句柄、类名和标题 ? 215 

7.10.5 修改窗口和控件的文字 ? 216 

7.11 发送邮件  218 

7.11.1 启用邮箱的 SMTP服务 ? 218 

7.11.2 使用 CDO ? 219 

7.11.3 使用 Net.Mail ? 221 

7.12 读写注册表 ? 223 

7.12.1 认识注册表的结构 ? 223 

7.12.2 RegistryKey对象? 224 

7.12.3 打开子项  225 

7.12.4 获取所有键值信息 ? 227 

7.12.5 获取所有子项 ? 227 

7.12.6 创建子项  229 

7.12.7 修改和删除键值  229 

7.12.8 删除子项  230 

7.13 操作进程  230 

7.13.1 创建进程  231 

7.13.2 查看进程  232 

7.13.3 结束进程  233 

7.13.4 进程退出事件 ? 234 

7.14 类库项目的创建和调用  234 

7.14.1 被 VB.NET程序调用的类库项目  235 

7.14.2 被 VBA程序调用的类库项目  239 

7.15 小结 ? 243

第8章 VB.NET操作 Office对象  244 

8.1 操作 Excel应用程序对象 ? 244 

8.1.1 获取正在运行的 Excel  245 

8.1.2 创建 Excel应用程序对象  246 

8.1.3 调用 Excel工作表函数 ? 247 

8.1.4 调用 VBA中的过程和函数 247 

8.1.5 使用单元格选择对话框  248 

8.2 操作 Excel工作簿  248 

8.2.1 工作簿的新建和保存 ? 248 

8.2.2 工作簿的打开和关闭 ? 249 

8.3 操作 Excel工作表  249 

8.3.1 工作表的插入和删除 ? 249 

8.3.2 工作表的移动和复制 ? 250 

8.4 操作 Excel单元格  250 

8.4.1 单元格的遍历  250 

8.4.2 单元格接收一维数组 ? 251 

8.4.3 单元格接收二维数组 ? 251 

8.4.4 数组接收单元格 ? 252 

8.5 处理 Excel中的事件 ? 253 

8.5.1 使用 WithEvents创建 Excel事件  253 

8.5.2 使用 AddHandler和 RemoveHandler处理 Excel事件  254 

8.6 操作其他 Office对象  257 

8.6.1 自定义 Office工具栏 ? 257 

8.6.2 文件选择对话框 ? 259 

8.6.3 操作 VBE ? 261 

8.7 ADO.NET操作 Access数据库 ? 263 

8.7.1 连接数据库 ? 264 

8.7.2 增加记录  265 

8.7.3 删除记录  267 

8.7.4 更新记录  267 

8.7.5 返回标量 Select查询  267 

8.7.6 遍历结果记录集 ? 267 

8.7.7 生成 DataTable对象  268 

8.7.8 断开数据库 ? 269 

8.8 小结 ? 270

第9章 VSTO外接程序 ? 271 

9.1 VSTO外接程序与 COM加载项 ? 271 

9.2 开发环境配置 ? 272 

9.3 Office主互操作程序集  273 

9.3.1 PIA的副本 ? 273 

9.3.2 添加其他 Office组件的引用  275 

9.4 创建 VSTO外接程序项目  276 

9.5 外接程序项目的调试  279 

9.6 Visual Studio 2010 Tools for Office Runtime ? 282 

9.7 VSTO外接程序项目中的引用和命名空间 ? 283 

9.7.1 Excel对象类型  283 

9.7.2 自定义 Office界面方面的命名空间  286 

9.7.3 Excel的 VSTO对象类型  287 

9.7.4 Office对象类型  288 

9.8 COM加载项与注册表的关系  289 

9.9 访问宿主应用程序的对象  291 

9.9.1 调用 VBA中的过程和函数 292 

9.9.2 自动断开 COM加载项 ? 292 

9.10 VBA调用 VSTO中的过程和函数 292 

9.11 外接程序项目允许包含的内容 ? 294 

9.12 小结 ? 294

第10章 使用功能区可视化设计器 ? 295 

10.1 可视化设计器的基本用法 ? 295 

10.1.1 在内置选项卡中定制  296 

10.1.2 自定义新选项卡  300 

10.1.3 Group中加入 DialogBoxLauncher  302 

10.2 可视化设计器的文件构成 ? 303 

10.2.1 查看可视化设计器源文件  304 

10.2.2 限制控件标题的自动换行  305 

10.2.3 可视化设计器的事件文件  306 

10.3 可视化设计器对象模型  306 

10.3.1 OfficeMenu  307 

10.3.2 功能区控件 309 

10.3.3 Button  309 

10.3.4 通用属性  310 

10.3.5 EditBox  310 

10.3.6 CheckBox和 ToggleButton ? 311 

10.3.7 ComboBox和 DropDown ? 312 

10.3.8 Gallery ? 314 

10.3.9 Menu、SplitButton和 Separator? 316 

10.4 CreateRibbonExtensibilityObject函数 317 

10.4.1 选择性加载指定的可视化设计器 ? 318 

10.4.2 使用代码自动添加和移除功能区控件  319 

10.5 操作运行时的可视化设计器  323 

10.5.1 利用 IRibbonUI对象激活选项卡 ? 323 

10.5.2 遍历和读写功能区控件 ? 323 

10.6 修改可视化设计器的默认模板 ? 324 

10.6.1 内置选项卡改为自定义选项卡 ? 325 

10.6.2 移除默认的 Group1  326 

10.7 小结 ? 326

第11章 使用 XML实现 customUI  327 

11.1 Ribbon XML概述 ? 327 

11.1.1 可以定制的场所  328 

11.1.2 使用方式 ? 328 

11.2 VSTO项目中实现 Ribbon XML  329 

11.2.1 创建 Ribbon类 ? 329 

11.2.2 重写 CreateRibbonExtensibility -Object函数 ? 330 

11.3 GetCustomUI函数  330 

11.3.1 RibbonID参数  331 

11.3.2 回调函数 ? 333 

11.3.3 IRibbonUI对象 ? 334 

11.3.4  Ribbon XML代码的返回方式  335 

11.4 Ribbon XML设计实例分步讲解 ? 336 

11.4.1 使用类创建 Ribbon接口 336 

11.4.2 回调函数的查询  340 

11.4.3  使用 Visual Studio的 XML编辑器  341 

11.4.4 使用外部 XML文件 ? 344 

11.4.5 动态生成 XML代码 ? 346 

11.5 其他控件和回调处理 ? 348 

11.5.1 处理以 on开头的回调函数  348 

11.5.2 处理以 get开头的回调函数  351 

11.6 使用自定义图标 ? 354 

11.6.1 loadImage-image 354 

11.6.2 getImage ? 358 

11.7 小结  363

第12章 自定义任务窗格 ? 364 

12.1 创建任务窗格  364 

12.2 处理任务窗格的可见性  367 

12.3 处理任务窗格的停靠位置 ? 368 

12.4 任务窗格操作 Office对象 ? 369 

12.5 使用任务窗格的事件 ? 370 

12.5.1 任务窗格的可见性同步 customUI控件  370 

12.5.2 通过任务窗格的停靠位置改变控件布局  373 

12.6 处理新窗口的任务窗格  375 

12.7 任务窗格中加入 WPF用户控件 ? 379 

12.8 小结 ? 384 

第13章 VSTO开发项目实战  385 

13.1 Excel外接程序开发:数组公式的自动扩展  386 

13.2  Word外接程序开发:表格内容自动汇总工具  389 

13.3 PowerPoint外接程序开发:幻灯片导出为图片  391 

13.4 Outlook外接程序开发:来信自动执行任务  395 

13.5 小结 ? 398

第14章 VSTO外接程序的打包与发布 ? 399 

14.1 简单发布  399 

14.1.1 从部署文件中获取安装信息 ? 400 

14.1.2 写入注册信息 ? 401 

14.1.3 删除注册信息 ? 401 

14.1.4 使用 VBA实现自动安装和卸载 Office外接程序  401 

14.2 使用 Inno Setup制作安装包  404 

14.2.1 iss脚本文件的构成  404 

14.2.2 制作 iss脚本文件  405 

14.2.3 产品的安装和卸载 ? 407 

14.2.4 使用 iss模板文件  408 

14.3 小结 ? 409

第15章 开发Office文档 ? 410 

15.1 创建 Excel工作簿项目? 410 

15.2 使用 Office事件 ? 412 

15.3 添加 customUI ? 414 

15.4 使用文档操作窗格  416 

15.5 NamedRange宿主控件 ? 419 

15.6 ListObject宿主控件  423 

15.7 运行时动态增删宿主控件 ? 428 

15.8  VSTO外接程序向工作表增删控件 431 

15.9 Office文档的发布 ? 433 

15.10 创建 Word文档项目  433 

15.11 文档上添加宿主控件 ? 436 

15.12 小结  439

第16章 Office 2003的 VSTO开发  440 

16.1 开发环境配置  440 

16.1.1 Office 2003的安装 ? 440 

16.1.2 Visual Studio 2008的安装  441 

16.1.3 安装 Office 2003补丁 ? 443 

16.2 Office 2003外接程序 ? 444 

16.3 Office 2003文档自定义项 ? 446 

16.3.1 Excel 2003工作簿的开发  446 

16.3.2 Word 2003文档的开发 450 

16.4 小结 ? 452

第17章 Excel-DNA开发入门  453 

17.1 Excel-DNA入门概述 ? 453 

17.1.1 Excel-DNA开发的意义和优势  453 

17.1.2 Excel-DNA与 VSTO的比较  454 

17.1.3 认识 Excel-DNA开发包  454 

17.1.4 Excel-DNA的加载方式 ? 455 

17.2 .NET程序的编译 ? 456 

17.2.1 编译生成 .exe可执行文件 ? 458 

17.2.2 编译生成 .dll动态链接库  459 

17.3 使用记事本创建 Excel-DNA项目 ? 459 

17.3.1 dna文件的部署  460 

17.3.2 dll文件的生成 460 

17.3.3 xll文件的拷贝 461 

17.3.4 功能测试  461

17.4 Excel-DNA项目的打包  463 

17.5 小结 ? 464

第18章 Excel-DNA函数设计  465 

18.1 自定义函数的属性修饰  465 

18.1.1 更改函数的属性  465 

18.1.2 更改函数参数属性 ? 466 

18.2 函数的参数类型 ? 468 

18.2.1 工作表的一行或者一列作为参数  469 

18.2.2 工作表的矩形区域作为参数  470 

18.3 函数的返回值类型  471 

18.3.1 返回一维数组 ? 471 

18.3.2 返回二维数组 ? 472 

18.4 小结 ? 473

第19章 使用Visual Studio进行 Excel-DNA开发 ? 474 

19.1 创建 Excel-DNA类库项目  475 

19.1.1 添加 ExcelDna.Integration引用  475 

19.1.2 修改函数代码 ? 477 

19.1.3 添加 dna文件 ? 477 

19.1.4 生成 dll文件  479 

19.2  Excel VBA中调用 Excel-DNA加载项中的函数和过程  481 

19.3 Excel-DNA项目的启动和卸载事件 482 

19.4 自定义函数和参数的智能感知设计 484 

19.4.1 独立加载

19.4.2 引用并打包 ExcelDna.IntelliSense.dll  486 

19.5 Excel-DNA项目的调试  490 

19.6 Excel-DNA中使用 customUI ? 493 

19.6.1 考虑 Excel版本  498 

19.6.2 使用自定义图标  500 

19.7 Excel-DNA中使用任务窗格 503 

19.8 Excel-DNA中使用 Excel事件 ? 506 

19.9 Excel-DNA中使用 Office工具栏 ? 510 

19.10 使用 NuGet程序包管理器快速创建 Excel-DNA项目  515 

19.10.1 工作表标签右键菜单设计  517 

19.10.2 排序功能设计 ? 520 

19.11 小结  523

第20章 语言差异和转换技巧  524 

20.1 VB.NET与 VBA的语言差异 ? 524 

20.1.1 My对象 524 

20.1.2 Continue和自身赋值语句  526 

20.1.3 字符串是对象 ? 526 

20.1.4 不能使用默认属性 ? 526 

20.1.5 调用过程、函数、对象的方法必须使用圆括号  527 

20.1.6 窗体和控件的变化 ? 527 

20.1.7 颜色的设置和获取 ? 527 

20.2 VB.NET与 C#的语言差异 ? 529 

20.2.1 程序结构  529 

20.2.2 命名空间的导入方式  530 

20.2.3 数据类型关键字  530 

20.2.4 变量、常量的声明方式 ? 530 

20.2.5 过程、函数的声明和调用方式  530 

20.2.6 类型转换方式 ? 531 

20.2.7 比较运算符 531 

20.2.8 逻辑运算符 531 

20.2.9 字符串连接 531 

20.2.10 条件选择结构 ? 532 

20.2.11 循环结构 ? 532 

20.2.12 数组的声明和元素的访问  533 

20.2.13 特殊字符串常量的表达 ? 533 

20.2.14 异常处理 ? 533 

20.2.15 事件的动态增加和移除 ? 534 

20.3 VBA代码如何转换为 C#  534 

20.3.1 补全 VBA代码 ? 534 

20.3.2 VBA改写 C#的注意点 ? 535 

20.3.3 Excel VBA转 C#? 537 

20.3.4 Outlook VBA转 C#  538 

20.4 小结 ? 539