ylbtech-LanguageSamples-OfficeSample(COM 互操作)

简介:
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-OfficeSample(COM 互操作)

 

1.A,示例(Sample)返回顶部

本示例演示如何使用称为“COM 互操作”、“省略 ref”、“索引属性”、“命名参数”和“可选参数”的 C# 4.0 功能来创建与 Microsoft Office 进行通信的 C# 应用程序。 传统上,为了访问 Word、Excel 等 Microsoft Office 应用程序,C# 开发人员不得不编写相对冗长的代码。 新增的 C# 4.0 功能极大简化了对 Office API 的调用。

请看本示例中所用 Microsoft Office 方法的以下声明:

void PasteSpecial(ref object IconIndex = nullref object Link = null
    ref object Placement = nullref object DisplayAsIcon = null,
    ref object DataType = nullref object IconFileName = null
    ref object IconLabel = null);

可以看到,此方法接受相当多的参数。 在 C# 中,开发人员传统上必须填写每个参数,即使进行这一调用的开发人员本欲通过支持可选参数来简化其使用也是如此。 在 C# 4.0 中,利用新增的对命名参数和可选参数的支持,开发人员可以仅指定所需参数,其他参数则使用其默认值:

word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);

在对 PasteSpecial 方法的调用中,Link 和 DisplayAsIcon 参数是显式命名的,且设置为值 true。 所有其他参数都默认为 Office API 开发人员在内部指定的值,如上面的签名所示。

您可以创建自己的支持命名参数和可选参数的调用。 请看以下示例:

public void M(int x, int y = 5, int z = 7) { }

在此方法中,为参数 y 和 z 分配了默认值。 对此方法的调用如下所示:

M(123); // M 的普通调用
M(1, 2); // 省略 z,等效于 M(1, 2, 7)
M(1);  // 同时省略 y 和 z,等效于 M(1, 5, 7)
M(1, z: 3); // 通过名称传递 z
M(x: 1, z: 3); // 通过名称同时传递 x 和 z
M(z: 3, x: 1); // 反转实参的顺序

通过 C# 4.0 新增的动态功能,C# 开发人员可以更加方便地对 Office 编程。 现在,Office 中使用的类型可供 C# 开发人员调用,如同以 dynamic 类型对它们进行了声明一样。 下面是设置单元格属性的传统方式:

((Excel.Range)excel.Cells[1, 1]).Value2 = "ID";

现在,在 C# 4.0 中,开发人员可以编写如下所示的代码:

X1.Cells[11].Value = "ID";

借助索引属性功能,可以进一步简化调用,如下所示:

xl.Cells[1, 1] = "ID";

最后要介绍的是 No-PIA 功能,Office 开发人员一定会对它感兴趣。 主互操作程序集从 COM 接口生成,可在设计时提供有用的类型支持。 不过在运行时,这些程序集会增加程序的大小,可能导致版本控制问题。 利用 No-PIA 功能,可以继续在设计时使用 PIA,但在运行时省略 PIA。 C# 编译器将程序实际使用的小部分 PIA 直接复制到其程序集中。 您不再需要在程序的分发中包括 PIA。

1.B,示例代码(Sample Code)返回顶部

1.B.1, Program.cs

  View Code

1.B.2,

1.C,下载地址(Free Download)返回顶部

 

本文转自ylbtech博客园博客,原文链接:http://www.cnblogs.com/ylbtech/p/4197055.html,如需转载请自行联系原作者

相关文章
|
9月前
|
存储 JavaScript 前端开发
我的基于 JamStack 的新博客
我的基于 JamStack 的新博客
|
设计模式 Java 程序员
安卓开发者必备的42个链接
安卓开发者必备的42个链接
|
设计模式 Java 程序员
安卓开发者必备的 42 个链接
暑假就要结束了(译注:本文发布在13年8月份),或许你已决定成为一个安卓程序员。假期中,我收集了42个帮助大家学习安卓的链接。有的链接是面向初学者的帮助你从头开始,其他的则面向比较高级的开发者。当然这个列表是相当主观的,如果您也有更多关于安卓内容的链接,欢迎在评论栏中留言。
218 0
|
算法 网络协议 数据中心
趣谈网络协议-笔记(2)
四、按课程笔记 上面基础内容基本是从前三节课程整理出来的,下面从第四节开始分节记录 第四节 DHCP 源ip到目标ip,如果同一个网段,直接ARP获取mac地址发过去;否则发送到网关。
1149 0
|
缓存 编解码 负载均衡
趣谈网络协议-笔记(3)
第十一、十二节 TCP TCP包结构 TCP解决的问题: 顺序 丢包 连接维护,有始有终 流量控制,把握分寸,不撑死不饿死 拥塞控制,知进退 连接建立的三次握手:保证两端都一发一收,基本可靠;包起始序号随机生成。
2005 0
|
网络协议 Windows
趣谈网络协议-笔记(1)
前言 来自极客时间上的讲师刘超的关于网络协议的课程,质量非常高,强烈推荐。 一、概念 协议三要素 语法 语义 顺序 以太网 Ethernet 当今局域网采用的最通用的通信协议标准,处于数据链路层。
3082 0
|
新零售 Web App开发 网络协议
趣谈网络协议笔记(1)
写在前面 2018年6月20日拿到毕业证,正式结束了自己的学生生涯。 2018年7月2日,自己正式开始了人生中的第一份正式工作,人人车的Android开发工程师。
1609 0