此演练将演示如何从 Microsoft Office Excel 文档级自定义项中打开 Windows 窗体,收集来自用户的信息并将这些信息写入工作表单元格。
第一步是要创建一个 Excel 工作簿项目。
创建新项目
-
创建一个名为“WinFormInput”的 Excel 工作簿项目,并在向导中选择“创建新文档”。
将一个指定范围添加到 Sheet1 中
-
选择 Sheet1 中的单元格“A1”。
-
在“名称”框中键入“formInput”。
-
按 Enter。
NamedRange 控件被添加到单元格“A1”中。 选中单元格“A1”后,工作表中没有明显的指示,但“formInput”会显示在“名称”框(正好在左侧工作表的上面)和“属性”窗口中。NameRange控件,其实就是给一个单元格起一个名字,当我们修改了单元格默认的名称,系统就会自动添加一个名为“NameRange”的控件到单元格,在自定义的Windows窗体中,我们可以使用Globals.Sheet1.formInput(Globls.工作簿名称.自定义的单元格名称)来使用这个NameRange控件,并可以使用NameRange的方法属性等,例如后面例子中的“Globals.Sheet1.formInput.value2”
将 Windows 窗体添加到项目中
创建一个提示用户输入信息的 Windows 窗体。
添加 Windows 窗体
-
在“解决方案资源管理器”中选择“WinFormInput”项目。
-
在“项目”菜单上,单击“添加 Windows 窗体”。
-
将窗体命名为 GetInputString.cs,然后单击“添加”。 新窗体在设计器中随即打开。
-
选择该按钮,在“属性”窗口中找到“Text”属性,将文本更改为“确定”。
接下来,在 ThisWorkbook.cs 中添加用于收集用户信息的代码。
创建并显示 GetInputString Windows 窗体的一个实例,然后将用户的信息写入到工作表的某个单元格中。
显示窗体并收集信息
-
在“解决方案资源管理器”中右击“ThisWorkbook.cs”,然后单击“查看代码”。ThisWorkbook,好像是应用程序的系统级别管理类
-
在 ThisWorkbook 的 Open 事件处理程序中,添加下列代码以声明 GetInputString 窗体的一个变量,然后显示该窗体。
注意
在 C# 中,必须添加一个事件处理程序,如下面的 Startup 事件中所示。
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open); }
注册一个事件,在Excel文档打开的时候就会自动运行。 private void ThisWorkbook_Open() { GetInputString inputForm = new GetInputString(); inputForm.Show(); } -
创建一个名为 WriteStringToCell 的方法,此方法用于将文本写到一个指定的范围内。 将从窗体中调用此方法,并且用户的输入将传递到单元格“A1”上的 NamedRange 控件 formInput。
public void WriteStringToCell(string formData) { Globals.Sheet1.formInput.Value2 = formData; }
Globls.工作簿名称.自定义的单元格名称.NameRange控件属性
接下来,向窗体中添加用于处理按钮的单击事件的代码。
将信息发送到工作表
-
在“解决方案资源管理器”中右击“GetInputString”,然后单击“视图设计器”。
-
双击该按钮以打开代码文件,按钮的 Click 事件处理程序也随之添加。
-
向事件处理程序添加代码以从文本框中提取输入内容,将其发送到函数 WriteStringToCell,然后关闭窗体。
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose();
测试工作簿
-
按 F5 运行项目。
-
确认 Windows 窗体显示。
-
在文本框中键入“Hello World”,然后单击“确定”。
-
确认“Hello World”显示在工作表的单元格“A1”中。