4. 将Excel表格嵌入Word文档
Excel表格填充完成后,我们将这个表格嵌入到Word文档中。在主函数Main()的末尾添加如下代码,它将创建一个空的Word文档,然后通过调用函数PasteSpecial(),将Excel表格以链接的形式粘贴到Woed文档中:
word.Visible = true;
word.Documents.Add();
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
这里需要说明的是,PasteSpecial()函数实际上有7个参数,这些参数都是可选的。如果是在C# 3.0中,我们必须全部给定这7个参数,不管这些参数是否真正需要。在C# 3.0中,PasteSpecial()函数的调用应该是这个样子:
object iconIndex = System.Reflection.Missing.Value;
object link = true;
object placement = System.Reflection.Missing.Value;
object displayAsIcon = true;
object dataType = System.Reflection.Missing.Value;
object iconFileName = System.Reflection.Missing.Value;
object iconLabel = System.Reflection.Missing.Value;
word.Selection.PasteSpecial(ref iconIndex,
ref link,
ref placement,
ref displayAsIcon,
ref dataType,
ref iconFileName,
ref iconLabel);
而在C# 4.0中,因为它支持了可选参数,使得原来需要15行代码才能完成的工作,现在只需要一行代码。大象减肥了!
5. 运行解决方案
到此为止,我们就完成了所有的开发工作,按下F5,运行整个解决方案,我们应该可以看到如下的运行结果:

图3 运行结果
6. No-PIA部署
开发完成后,最后的任务就是将应用程序部署到目标机器上。在以前的Office开发中,我们除了需要在目标机器上部署我们的应用程序之外,还需要部署一大堆应用程序运行必需的互操作程序集,这使得Office应用开发起来困难,想用起来也不简单。
为了让大家理解Office应用程序对Office互操作程序集的依赖,我们可以使用IL DASM工具查看应用程序所引用的程序集。通过在Visual Studio命令行工具(Visual Studio command prompt)中执行ildasm命令,我们可以运行IL DASM工具,然后打开我们刚刚开发的应用程序OfficeDev.exe,可以看到如下的界面:

图4 使用IL DASM查看应用程序
双击其中的“Manifest”,我们可以在弹出的窗口中看到应用程序对Microsoft.Office.Interop.Excel和Microsoft.Office.Interop.Word的引用: