3. 在Excel中顯示賬號(hào)數(shù)據(jù)
上一步我們完成了數(shù)據(jù)的準(zhǔn)備,下面我們將把這些數(shù)據(jù)顯示到Excel表格中。我們定義一個(gè)DisplayInExcel()函數(shù)用于創(chuàng)建Excel表格,然后將容器中的賬號(hào)數(shù)據(jù)填充到Excel表格中:
public static void DisplayInExcel(IEnumerable<Account> accounts, Action<Account, Excel.Range> DisplayFunc) { var xl = new Excel.Application(); xl.Workbooks.Add(); xl.Visible = true; xl.Cells[1, 1].Value2 = "Name"; xl.Cells[1, 2].Value2 = " Balance"; 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(); }
然后,我們?cè)贛ain()函數(shù)的底部,按照如下的方式調(diào)用DisplayInExcel()函數(shù),最終完成Excel表格的創(chuàng)建和數(shù)據(jù)的填充:
DisplayInExcel(checkAccounts, (account, cell) => { // This multiline lambda will set // custom processing rules. cell.Value2=account.Name; cell.get_Offset(0, 1).Value2 = account.Balance;
if (account.Balance < 0) { cell.Interior.Color = 255; cell.get_Offset(0, 1).Interior.Color = 255; } });
這里我們使用了Lambda表達(dá)式,由它來對(duì)數(shù)據(jù)填充的邏輯進(jìn)行具體的定義,最終完成數(shù)據(jù)的填充。同時(shí),它還會(huì)檢查Balance的值,如果為負(fù)值,則將表格填充為紅色,表示這個(gè)賬號(hào)已經(jīng)赤字了。最后,為了使得Excel表格更加美觀,我們讓Excel表格根據(jù)內(nèi)容自動(dòng)調(diào)整表格的寬度。在DisplayInExcel()函數(shù)的末尾,我們添加如下的代碼:
xl.Columns[1].AutoFit(); xl.Columns[2].AutoFit();
在這里,有過Office開發(fā)經(jīng)驗(yàn)的朋友可能會(huì)感到奇怪,AutoFit()函數(shù)可以被Columns的返回結(jié)果直接調(diào)用而無需進(jìn)行類型轉(zhuǎn)換嗎?的確,在C# 3.0中,要想調(diào)用AutoFit()函數(shù),必須對(duì)Columns的返回值進(jìn)行類型轉(zhuǎn)換,上面的代碼應(yīng)該寫成:
// C# 3.0 code. Not necessary in C# 4.0! ((Range)xl.Columns[1]).AutoFit(); ((Range)xl.Columns[2]).AutoFit();
但是在C# 4.0中,因?yàn)橛辛薲ynamic類型的支持,繁瑣的類型轉(zhuǎn)換將不再需要。在C# 4.0中,從COM接口返回的Object類型的對(duì)象,被自動(dòng)當(dāng)做dynamic類型來處理。我們前面曾經(jīng)介紹過,因?yàn)閯?dòng)態(tài)類型的遲綁定特性(late binding),dynamic類型可以調(diào)用任何函數(shù),所以無需再進(jìn)行類型轉(zhuǎn)換,也不會(huì)產(chǎn)生編譯錯(cuò)誤。在運(yùn)行的時(shí)候,動(dòng)態(tài)語言運(yùn)行時(shí)(DLR)會(huì)動(dòng)態(tài)查找對(duì)象真正的類型而調(diào)用相應(yīng)的函數(shù)。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 Visual Studio 2010特性支持Office [2] 下一頁 Visual Studio 2010特性支持Office [4]
◎進(jìn)入論壇計(jì)算機(jī)技術(shù)版塊參加討論
|