繁体   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