C#4.0新Feature官方文檔和Sample Code下載 [本文提供Office編程的一段Sample Code作為預覽]
先把重點寫在前頭:
http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=csharpfuture&ReleaseId=1686
以上這個地址是下載官方C#4.0的最新文檔和Sample Code,而以下正是我看到第一個例子,關于Office的操作。可見它的例子質量還是蠻高的,值得學習,所以分享給大家,也許有些人已經知道這個鏈接,如果不能下載,留言告訴我,我到時下載到cnblogs里。
前言:
從C#1.0,2.0,3.0,4.0一路走來,我們可能不是去掌握它的技術,而是掌握它為什么會這樣變化,從2.0的泛型,到3.0的Lamda,Linq,集合對象初始化等,再到現在4.0的動態編程,可選參數等,微軟的種種更新讓我們都跟著很累,但是,如果我們深入進去多看看“為什么”,也許就不是很累,而是會發現這些更新都是必然。
下面代碼在.NET4.0環境下編譯,是關于將一些數據寫入Excel并操作Word的一小段代碼,代碼很簡單,但需要注意到是下面的一些C#3.0/4.0里的知識,如Lamda, Named Parameter等。
源代碼
using System;
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
namespace Zivsoft.OfficeDemo
{
/// <summary>
/// 域名信息
/// </summary>
public class DomainInfo
{
public string DomainName { get; set; }
public string Owner { get; set; }
}
public class Program
{
/// <summary>
/// 入口
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//注意定義方式(C#3.0)
var checkAccounts = new List<DomainInfo> {
new DomainInfo {
DomainName = "www.zivsoft.com",
Owner = "zivsoft"
},
new DomainInfo {
DomainName = "lihua.club.officelive.com",
Owner = "microsoft"
}
};
DisplayInExcel(checkAccounts, (domain, cell) =>//注意參數2, Lambda, domain是自定義類DomainInfo,cell是Excel.Range
{
// Lambda內部業務
cell.Value2 = domain.DomainName;
cell.get_Offset(0, 1).Value2 = domain.Owner;
if (domain.Owner == "zivsoft")//如果owner是zivsoft,改變顏色
{
cell.Interior.Color = 255;
cell.get_Offset(0, 1).Interior.Color = 255;
}
});
//操作Word對象
var word = new Word.Application();
word.Visible = true;
word.Documents.Add();
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);//注意這是C#4.0中可選參數用法
}
public static void DisplayInExcel(IEnumerable<DomainInfo> accounts,
Action<DomainInfo, Excel.Range> DisplayFunc)//參數2中的Action是一個泛型delegate
{
//操作Excel對象
var xl = new Excel.Application();
xl.Workbooks.Add();
xl.Visible = true;
xl.Cells[1, 1] = "域名";
xl.Cells[1, 2] = "擁有者";
xl.Cells[2, 1].Select();
foreach (var ac in accounts)
{
DisplayFunc(ac, xl.ActiveCell);
xl.ActiveCell.get_Offset(1, 0).Select();
}
xl.get_Range("A1:B3").Copy();
xl.Columns[1].AutoFit();
xl.Columns[2].AutoFit();
}
}
}
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
namespace Zivsoft.OfficeDemo
{
/// <summary>
/// 域名信息
/// </summary>
public class DomainInfo
{
public string DomainName { get; set; }
public string Owner { get; set; }
}
public class Program
{
/// <summary>
/// 入口
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//注意定義方式(C#3.0)
var checkAccounts = new List<DomainInfo> {
new DomainInfo {
DomainName = "www.zivsoft.com",
Owner = "zivsoft"
},
new DomainInfo {
DomainName = "lihua.club.officelive.com",
Owner = "microsoft"
}
};
DisplayInExcel(checkAccounts, (domain, cell) =>//注意參數2, Lambda, domain是自定義類DomainInfo,cell是Excel.Range
{
// Lambda內部業務
cell.Value2 = domain.DomainName;
cell.get_Offset(0, 1).Value2 = domain.Owner;
if (domain.Owner == "zivsoft")//如果owner是zivsoft,改變顏色
{
cell.Interior.Color = 255;
cell.get_Offset(0, 1).Interior.Color = 255;
}
});
//操作Word對象
var word = new Word.Application();
word.Visible = true;
word.Documents.Add();
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);//注意這是C#4.0中可選參數用法
}
public static void DisplayInExcel(IEnumerable<DomainInfo> accounts,
Action<DomainInfo, Excel.Range> DisplayFunc)//參數2中的Action是一個泛型delegate
{
//操作Excel對象
var xl = new Excel.Application();
xl.Workbooks.Add();
xl.Visible = true;
xl.Cells[1, 1] = "域名";
xl.Cells[1, 2] = "擁有者";
xl.Cells[2, 1].Select();
foreach (var ac in accounts)
{
DisplayFunc(ac, xl.ActiveCell);
xl.ActiveCell.get_Offset(1, 0).Select();
}
xl.get_Range("A1:B3").Copy();
xl.Columns[1].AutoFit();
xl.Columns[2].AutoFit();
}
}
}
程序運行結果


浙公網安備 33010602011771號