簡體   English   中英

如何實例化一個新的工作表

[英]How to instantiate a new Worksheet

我想對NetOffice.ExcelApi.Worksheet類進行子類化,因為我需要帶有額外字段的“自定義”工作表。 作為此新類實例的構建的一部分,我只想調用基類的構造函數。 也就是說,基本上我需要一個常規的Worksheet但需要設置一些額外的字段並在其上具有幾個額外的功能。

如何創建和新建Worksheet 到目前為止,我只使用了Sheets類中的Add方法,該方法會自動為您執行此操作,然后將其添加到圖紙中。 據我所知, Worksheet類的構造函數需要獲取父對象(這不是問題)和傳入的COM代理。我該怎么做?

我建議您使用NPOI與excel一起工作。 它工作正常,不需要安裝excel。 它可以從NuGet獲得。 樣品在這里 希望對您有所幫助。

首先:我嘗試在Codeplex上回答幾天,但收到系統降級通知。 (目前,codeplex不在討論之列。完整討論: http : //netoffice.codeplex.com/discussions/587938

不確定我是否正確理解您,或者您可能沒有意識到COM的工作方式。 每當您調用Application.ActiveSheet時,您都會得到一個新的!!! instance(來自應用程序的代理)當然,它在COM服務器上仍然是相同的實例(如果當前工作表沒有更改),但是每次您請求時都會獲得一個新的實例/代理。 (您無需在NetOffice中明確部署每個實例/代理實例,此外,您可以輕松地將本地代理實例與“ ==”或“!=”進行比較,但這只是一些NetOffice的法寶)

每次您請求或使用緩存策略時,您都必須重新廣播工作表實例。

我能為您做的是在NetOffice Factory Core中花費一個活動。 像這樣:

//Event Trigger Example
private NetOfficeCore_OnCreateInstance(object newInstance, ref Type replaceTo)
{
      Worksheet sheet = newInstance as WorkSheet;
      if(null != sheet && sheet.Name = "MySheet")
      {
            replaceTo = typeof(MyCustomWorkSheet);
      }
}

在此示例中,所有名稱為“ MySheet”的工作表都希望用您的自定義類型自動替換。 (您仍然必須將Application.ActiveSheet轉換為您的自定義類型)

讓我知道您的想法*,這樣我就可以今天創建此活動並構建新版本。

*塞巴斯蒂安(免責聲明:NetOffice作者)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM