引用Excel模板

iDotNetSpace發表於2009-10-27

這一節,主要有兩個方面:

第一個是直接對Excel模板進行二次開發,第二個是對已經存在模板進行開發和引用。

·         可以直接對Excel 模板進行二次開發,開發工程的引用和 建立Excel二次開發環境 一樣。但是去掉了一些step 在每個sheet中都有兩個事件,一個是在sheet執行開始之前就執行,還一個是在執行之後就執行。在一個Excel Template Workbook 中還可以新增sheet

    private void Sheet1_Startup(object sender, System.EventArgs e)

{

 

    }

    private void Sheet1_Shutdown(object sender, System.EventArgs e)

{

          

}

    #region VSTO Designer generated code

 

        ///

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        ///

              private void InternalStartup()

        {

            this.Startup += new System.EventHandler(Sheet1_Startup);

            this.Shutdown += new System.EventHandler(Sheet1_Shutdown);

        }

       

     #endregion

要呼叫此sheet中的任何資訊。此時要用到Globals.Sheet1.xxxx

在外掛開發中經常會用到Globals 這個物件。所以對很多的操作,要查詢其方法,首先從全域性物件Globals入手。

例如在這裡寫個方法: 向模板sheet1 隨即新增資料

        public void LoadData()

        {

            Random ran = new Random();

            for (int i = 1; i <= 12; i++)

            {

                Globals.Sheet1.Cells[i, 1] = i.ToString() + "";

                Globals.Sheet1.Cells[i, 2] = ran.Next(2000).ToString();

              

            }

      }

 把這個方法在 Sheet1_Startup(object sender, System.EventArgs e) 方法中進行呼叫,執行之後就可以得到你資料了。

 

·         直接引用現有的模板:

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

            Microsoft.Office.Interop.Excel.Workbook book = app.Workbooks.Add(object Template);

這時候就把現有的模板新增到了workbook中。這時候我們可以向裡面填充一些資料。

public void SetValueForPrice(Microsoft.Office.Interop.Excel.Application app)

        {

            if (app == null)

            {

                return;

            }

            Worksheet sheet = app.ActiveSheet as Worksheet; //預設的為sheet1

            sheet.Cells.set_Item(6, 2, CurrentTime.ToString("d"));

            sheet.Cells.set_Item(7, 2, "PO#" + ProInf.PoNumber);

            sheet.Cells.set_Item(16, 2, ProInf.ProjectName);

            sheet.Cells.set_Item(21,3,CurrentTime.Year.ToString()+""+CurrentTime.Month.ToString()+"");

            sheet.Cells.set_Item(18,2, Startmonth.ToString()+@"/19/"+CurrentTime.Year.ToString());

            sheet.Cells.set_Item(18, 4, CurrentTime.Month.ToString() + @"/20/" + CurrentTime.Year.ToString());

            sheet.Cells.set_Item(21, 4, ProInf.ActualInvoiceAmount);

            sheet.Cells.set_Item(22, 4, ProInf.ActualInvoiceAmount);         

        }

設定完了以後,我們可以儲存:

book.Close(true, file, Missing.Value);

app.Quit();

對於二次開發系列,要多去實踐。實踐出來才能得到你想要的東西。甚至有意外的收穫。

原文地址:http://www.cnblogs.com/tomin/archive/2009/10/27/1590571.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章