VS DisplayInExcel()函數簡介
在向大家詳細介紹VS DisplayInExcel()函數之前,首先讓大家了解下在Excel中顯示賬號數據,然后全面介紹VS DisplayInExcel()函數,希望對大家有用。下面我們將把這些數據顯示到Excel表格中。我們定義一個VS DisplayInExcel()函數用于創建Excel表格,然后將容器中的賬號數據填充到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();
- }
然后,我們在Main()函數的底部,按照如下的方式調用VS DisplayInExcel()函數,最終完成Excel表格的創建和數據的填充:
- 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;
- }
- }
#t#這里我們使用了Lambda表達式,由它來對數據填充的邏輯進行具體的定義,最終完成數據的填充。同時,它還會檢查Balance的值,如果為負值,則將表格填充為紅色,表示這個賬號已經赤字了。最后,為了使得Excel表格更加美觀,我們讓Excel表格根據內容自動調整表格的寬度。在VS DisplayInExcel()函數的末尾,我們添加如下的代碼:
xl.Columns[1].AutoFit();
xl.Columns[2].AutoFit();
在這里,有過Office開發經驗的朋友可能會感到奇怪,AutoFit()函數可以被Columns的返回結果直接調用而無需進行類型轉換嗎?的確,在C# 3.0中,要想調用AutoFit()函數,必須對Columns的返回值進行類型轉換,上面的代碼應該寫成:
- // C# 3.0 code. Not necessary in C# 4.0!
- ((Range)xl.Columns[1]).AutoFit();
- ((Range)xl.Columns[2]).AutoFit();
但是在C# 4.0中,因為有了dynamic類型的支持,繁瑣的類型轉換將不再需要。在C# 4.0中,從COM接口返回的Object類型的對象,被自動當做dynamic類型來處理。我們前面曾經介紹過,因為動態類型的遲綁定特性(late binding),dynamic類型可以調用任何函數,所以無需再進行類型轉換,也不會產生編譯錯誤。在運行的時候,動態語言運行時(DLR)會動態查找對象真正的類型而調用相應的函數。