簡體   English   中英

以編程方式在Excel電子表格中的C#中創建復選框

[英]Programmatically create checkboxes in c# in an excel spreadsheet

作為我正在進行的項目的一部分,我需要能夠在excel電子表格中創建復選框,任何人都可以提供一個簡單的示例或將我引向有用的參考資料嗎? 我正在使用Excel Interop。

提前致謝。

可以在工作表上放置兩種控件,一種是“控件工具箱”中的ActiveX控件,另一種是“表單”(或“圖形”)工具中的“表單”控件。

通常,兩種控件的相似之處在於它們的工作方式相同。 也就是說,“繪圖”工具欄中的文本框是一個控件,您可以在其中鍵入文本。 基本上與ActiveX文本框相同。 兩種類型的復選框均用於選擇或取消選擇選項。

顯然,決定使用一個或另一個將基於它們的差異而不是相似性。 無論如何,對我而言,主要區別在於事件和格式。 ActiveX控件在顯示或響應控件事件時為電子表格設計者提供了更大的靈活性。 查看ActiveX控件的屬性演示了與Forms控件相比,它們可以執行的操作更多。 此外,Forrms控件具有一個基本事件,即click事件,您可以通過將宏分配給控件來訪問該事件。 另一方面,ActiveX控件有很多事件。 例如,ActiveX組合框具有十五個事件。

所有這些靈活性都是有代價的(您知道會)。 ActiveX控件會帶來很多額外的開銷,並且有bug的歷史。

權衡利弊后,我總是使用Forms控件,除非有特殊原因需要使用ActiveX。 表單控件精簡,卑鄙且易於使用。 但是,如果我需要一個組合框來顯示某種字體,則別無選擇,只能使用ActiveX控件。 同樣,如果我需要避免文本框中的某些字符,則將需要KeyPress事件,該事件在Forms文本框中不可用。 因此,我的建議和實踐是使用窗體控件,除非我需要僅ActiveX控件提供的功能。

表單復選框添加代碼

 ActiveSheet.CheckBoxes.Add 87, 18, 72, 17.25

ActiveX Checkbox添加代碼

    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
    DisplayAsIcon:=False, Left:=69.75, Top:=59.25, Width:=117.75, Height _
    :=14.25)

該代碼是VBA,但可以通過互操作從.Net輕松調用

這是我用於C#的東西

OLEObjects objs = worksheet.OLEObjects();
OLEObject obj = objs.Add("Forms.CheckBox.1", System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value, cell.Left + 1, cell.Top + 1, cell.Width - 2, cell.Height - 2);
obj.Object.Caption = "";
if (text == "TRUE")
{
    obj.Object.value = true;
}
else
{
    obj.Object.value = false;
}

我使用cell.Left + 1, cell.Top + 1, cell.Width - 2, cell.Height - 2來保持單元格四個側面的邊框

有趣的問題。 我還沒有嘗試過,但是我認為您可以將其添加為Worksheet.Shape項,或者將其添加為OLEObject。 下面的示例顯示如何從工作表中讀取現有的復選框。 這可能是一個從以下方面開始工作的好起點:

http://forums.asp.net/p/1244356/3293168.aspx

暫無
暫無

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

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