vs2010自带C# 4.0 示例_语言示例_第一部分

1.命名参数和可选参数

image

image

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

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

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

M(1, 2, 3); // 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); // 反转实参的顺序

 

 

2.Office示例

功能写入Excel,复制到Word。先看运行效果:

image

a:首先添加对office的word与excel的引用。

image

为了调用方便,使用using关键字。

image

 

 

启动word程序,默认是不可见的。

image

一般我们会新建一份word文档。对应的控制代码:image

这里关键是需要掌握委托的使用方式,lambda方式的匿名委托。

对于Excel特别要注意如果写数据之前,要进行对应的行列定位。(写数据之前,光标先定位一样)。

调用对应单元格的Select()方法。如果不断写数据,可用ActiveCell.Offset方法偏移定位。

具体参考代码:

View Code
 1 using System; 
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Word = Microsoft.Office.Interop.Word;
6 using Excel = Microsoft.Office.Interop.Excel;
7 namespace office示例
8 {
9 public class Account
10 {
11 public int ID { get; set; }
12 public string Name { get; set; }
13 public double Balance { get; set; }
14 }
15 class Program
16 {
17 static void Main(string[] args)
18 {
19 var getAccounts = new List<Account> {
20 new Account{ ID=123, Name="王芬芬", Balance=2900},
21 new Account{ID=356,Name ="泉清",Balance =-1800}
22 };
23
24 DisplayExcel(getAccounts, (account, cell) => {
25 //自己定义委托的方法主题 (该方法的两个参数 account与cell的类型已经被委托DisplayFunc确定了)
26 cell.Value = account.ID;
27 cell.Offset[0, 1].Value = account.Name;
28 cell.Offset[0, 2].Value = account.Balance;
29
30 //金额若是负数,红色提醒显示
31 if (account.Balance < 0)
32 {
33 cell.Interior.Color = 255;//红色
34 cell.Offset[0, 2].Interior.Color = 255;
35 }
36 });
37
38 //copy到word中
39 var word = new Word.Application();
40 word.Visible = true;//显示
41 word.Documents.Add();//新建文档
42 word.Selection.PasteSpecial();
43 //word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
44 }
45 static void DisplayExcel(IEnumerable<Account> accounts,
46 Action<Account, Excel.Range> DisplayFunc /*两个参数的委托*/)
47 {
48 //启动Execl
49 var x1 = new Excel.Application();//启动一个新的Excel程序实例(x1);
50 x1.Workbooks.Add();//新建excel
51 x1.Visible = true;//可以显示看见
52 x1.Cells[1, 1] = "ID"; x1.Cells[1, 2] = "姓名"; x1.Cells[1, 3] = "金额";//完成列标题
53 x1.Cells[2, 1].Select();//定位到第二行
54 //显示每个帐户信息
55 foreach (var ac in accounts)
56 {
57 DisplayFunc(ac, x1.ActiveCell);//执行委托
58 x1.ActiveCell.Offset[1, 0].Select();//定位到下一行,否则会造成覆盖
59 }
60
61 //实现复制
62 x1.Range["A1:C3"].Copy();//Excel显示上看起来有虚线框,为了copy到word中
63 //自动调整列的宽度
64 x1.Columns.AutoFit();
65 }
66 }
67 }

 

posted @ 2012-02-07 11:20  net小虫  阅读(522)  评论(0编辑  收藏  举报