C# 向.NET(VSTO)中的电子表格添加按钮
使用VSTO或某些相关技术,是否可以通过编程将按钮嵌入Excel工作表的单元格中,并将其配置为在单击时调用C#函数 怎么做C# 向.NET(VSTO)中的电子表格添加按钮,c#,.net,vsto,excel-interop,C#,.net,Vsto,Excel Interop,使用VSTO或某些相关技术,是否可以通过编程将按钮嵌入Excel工作表的单元格中,并将其配置为在单击时调用C#函数 怎么做 谢谢。通过VSTO文档自定义(即附加了.Net代码的工作簿),您可以在运行时向项目的工作表添加和删除控件。以下代码说明了这一想法: public partial class Sheet1 { private void Sheet1_Startup(object sender, System.EventArgs e) { var but
谢谢。通过VSTO文档自定义(即附加了.Net代码的工作簿),您可以在运行时向项目的工作表添加和删除控件。以下代码说明了这一想法:
public partial class Sheet1
{
private void Sheet1_Startup(object sender, System.EventArgs e)
{
var button = this.Controls.AddButton(10, 10, 50, 50, "My Button");
button.Text = "My Button";
button.Click += new EventHandler(button_Click);
}
void button_Click(object sender, EventArgs e)
{
MessageBox.Show("I was clicked!");
}
您还可以通过VSTO外接程序将控件动态添加到文档中,使用以下代码(多亏了网站上的人):
查看更多信息。以下是在VSTO加载项(Mathias答案的修改版本)中适用于我的代码:
按钮不能嵌入单元格中--按钮“浮动”。您最好在设计时将其与单元格对齐。是否尝试动态添加按钮?这将如何触发?C#it调用是否会在某个加载项中?这听起来像是一个复杂的设置,我不清楚你为什么要这样做;为什么不简单地用一个VSTO插件和一个菜单或功能区,使该功能可以从任何工作表中使用?@Jay:我可以接受。关于如何在工作表上方浮动按钮,有什么建议吗@Mathias:是的,我想动态添加按钮,C#回调将在外接程序中。我的外接程序的目的是帮助用户在电子表格中布局“表单”,我希望一些表单包含按钮。@McCoolBeth:我的回答有帮助吗?如果没有,还缺少什么?@Mathias:我需要从一个不依赖于任何特定文档的外接程序中使用它。您的答案可能适用于加载项以及文档自定义。当我回到相关项目时,我将尝试在几天内确定其适用性。
var workSheet = (Excel.Worksheet) sheet;
var vstoSheet = workSheet.GetVstoObject();
var button = vstoSheet.Controls.AddButton(50, 50, 100, 50, "Test");
button.Text = "Dynamic Button!";
using Excel = Microsoft.Office.Interop.Excel;
using ExcelTools = Microsoft.Office.Tools.Excel;
public void AddButtonToWorksheet()
{
Excel.Worksheet worksheet = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
ExcelTools.Worksheet vstoSheet = Globals.Factory.GetVstoObject(worksheet);
Button button = new Button();
button.Text = "Dynamic Button!";
vstoSheet.Controls.AddControl(
button, 50, 50, 100, 50, "TestButton");
}