首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Visual Studio 2010 Office 開發實戰:從業務實體建立到 Excel/Word 整合與 PIA 零部署

     編輯:關於.NET

實驗目標

  • 掌握 C# 4.0 / VB 10 新語法加速業務實體建立
  • 運用新語言特性簡化 Excel 互操作代碼
  • 實現 Office 應用程式間快速資料交換
  • 理解新建置流程如何簡化 Office 方案部署(免 PIA)

系統需求

  • Visual Studio 2010 Beta 2
  • .NET Framework 4
  • Microsoft Excel 2007
  • Microsoft Word 2007

練習一:建立業務實體集合並寫入 Excel

任務 1:建立主控台專案並參考 Office Interop 組件

  1. 新增專案 → Windows → Console Application,名稱 OfficeApplication,目標 .NET 4.0。
  2. 加入參考:Microsoft.Office.Interop.Excel、Microsoft.Office.Interop.Word(版本 12.0.0.0)。

參考清單

任務 2:定義業務實體類別

C# 使用自動實作屬性;VB 10 新增「自動實作屬性」語法,無需後端欄位:

// C#
public class Account
{
    public int ID { get; set; }
    public double Balance { get; set; }
    public string AccountHolder { get; set; }
}

' VB
Public Class Account
    Property ID As Integer
    Property Balance As Double
    Property AccountHolder As String
End Class

任務 3:集合初始化器快速填充資料

C# 3.0 / VB 10 均支援集合初始化器:

// C#
private static List<Account> CreateAccountList()
{
    return new List<Account> {
        new Account { ID = 1, Balance = 285.93, AccountHolder = "John Doe" },
        new Account { ID = 2, Balance = 2349.23, AccountHolder = "Richard Roe" },
        new Account { ID = 3, Balance = -39.46, AccountHolder = "I Dunoe" }
    };
}

任務 4:擴充方法 + Lambda 寫入 Excel 並格式化

// C# 擴充方法
static void DisplayInExcel(this IEnumerable<Account> accounts,
    Action<Account, Excel.Range> displayFunc)
{
    var xl = new Excel.Application();
    xl.Workbooks.Add();          // C# 4.0 可選參數簡化呼叫
    xl.Visible = true;
    xl.get_Range("A1").Value2 = "ID";
    xl.get_Range("B1").Value2 = "Balance";
    xl.get_Range("C1").Value2 = "Account Holder";
    xl.get_Range("A2").Select();

    foreach (var ac in accounts)
    {
        displayFunc(ac, xl.ActiveCell);
        xl.ActiveCell.get_Offset(1, 0).Select();
    }
    ((Excel.Range)xl.Columns[1]).AutoFit();
    ((Excel.Range)xl.Columns[2]).AutoFit();
    ((Excel.Range)xl.Columns[3]).AutoFit();
}

呼叫端以 Lambda 指定欄位對應與負餘額紅字標示:

checkAccounts.DisplayInExcel((account, cell) =>
{
    cell.Value2 = account.ID;
    cell.get_Offset(0, 1).Value2 = account.Balance;
    cell.get_Offset(0, 2).Value2 = account.AccountHolder;
    if (account.Balance < 0)
    {
        cell.Interior.Color = 255;
        cell.get_Offset(0, 1).Interior.Color = 255;
        cell.get_Offset(0, 2).Interior.Color = 255;
    }
});

Excel 輸出結果

練習二:將 Excel 工作表嵌入 Word 文件

  1. 於 DisplayInExcel 結尾複製範圍:xl.get_Range("A1:C4").Copy()。
  2. 新增 EmbedInWordDocument 方法,利用 PasteSpecial 貼上連結:
// C# 4.0 可選參數大幅簡化 7 參數呼叫
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: false);

早期 C# 需逐一傳遞 Missing.Value,現僅需命名必要參數。

Word 嵌入結果

練習三:移除 PIA 相依,實現零部署

  • 專案參考屬性中 Embed Interop Types = True(VS2010 預設)。
  • 編譯器將所需 COM 型別直接嵌入組件,部署時無需安裝 PIA,解決版本衝突、安裝包膨脹等痛點。

此特性極大簡化 Office 方案部署,開發者只需部署自身組件即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved