如何:向工作表添加 ListObject 控件

在文档级项目中,可以在设计时和运行时向 Microsoft Office Excel 工作表添加 ListObject 控件。

**适用于:**本主题中的信息适用于 Excel 2007 和 Excel 2010 的文档级项目和应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

在应用程序级外接程序项目中,还可以在运行时添加 ListObject 控件。

本主题介绍了以下任务:

  • 在设计时添加 ListObject 控件

  • 在运行时在文档级项目中添加 ListObject 控件

  • 在运行时在应用程序级项目中添加 ListObject 控件

有关 ListObject 控件的更多信息,请参见 ListObject 控件

在设计时添加 ListObject 控件

有多种方法可用来在设计时在文档级项目中向工作表添加 ListObject 控件:从 Excel 内添加,从 Visual Studio 的**“工具箱”中添加,以及从“数据源”**窗口中添加。

提示

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置

使用 Excel 中的功能区

  1. 在**“插入”选项卡上的“表”组中,单击“表”**。

  2. 选择要在列表中包含的一个或多个单元格,然后单击**“确定”**。

使用“工具箱”

  1. 从**“工具箱”“Excel 控件”**选项卡中,将 ListObject 拖到工作表上。

    随即出现**“添加 ListObject 控件”**对话框。

  2. 选择要在列表中包含的一个或多个单元格,然后单击**“确定”**。

    如果不想保留默认名称,可以在**“属性”**窗口中更改名称。

使用“数据源”窗口

  1. 打开**“数据源”**窗口,为项目创建一个数据源。 有关更多信息,请参见如何:连接到数据库中的数据

  2. 从**“数据源”**窗口中将一个表拖到工作表中。

    一个绑定到数据的 ListObject 控件即被添加到工作表中。 有关更多信息,请参见数据绑定和 Windows 窗体

在运行时在文档级项目中添加 ListObject 控件

可以在运行时动态地添加 ListObject 控件。 这使您能够为响应事件而创建宿主控件。 关闭工作表时,动态创建的列表对象不会像宿主控件一样保留在工作表中。 有关更多信息,请参见在运行时向 Office 文档添加控件

以编程方式将 ListObject 控件添加到工作表中

  • 在 Sheet1 的 Startup 事件处理程序中,插入下列代码,以向单元格**“A1”“A4”**中添加 ListObject 控件。

    Dim employeeData As Microsoft.Office.Tools.Excel.ListObject
    employeeData = Me.Controls.AddListObject(Me.Range("$A$1:$D$4"), "employees")
    
    Microsoft.Office.Tools.Excel.ListObject employeeData;
    employeeData = this.Controls.AddListObject(this.get_Range("$A$1:$D$4", missing), "employees");
    

在运行时在应用程序级项目中添加 ListObject 控件

您可以以编程方式在应用程序级项目中向任何打开的工作表添加 ListObject 控件。 保存并关闭工作表时,动态创建的列表对象不会像宿主控件一样保留在工作表中。 有关更多信息,请参见在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

以编程方式将 ListObject 控件添加到工作表中

  • 下面的代码生成一个基于打开的工作表的工作表宿主项,然后向**“A1”“A4”**单元格添加一个 ListObject 控件。

    Private Sub AddListObject()
        Dim NativeWorksheet As Microsoft.Office.Interop.Excel.Worksheet =
            Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1)
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim worksheet As Microsoft.Office.Tools.Excel.Worksheet =
            Globals.Factory.GetVstoObject(NativeWorksheet)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim worksheet = CType(Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets(1),  _
        '    Excel.Worksheet).GetVstoObject()
    
        Dim list1 As Microsoft.Office.Tools.Excel.ListObject
        Dim cell As Excel.Range = worksheet.Range("$A$1:$D$4")
        list1 = worksheet.Controls.AddListObject(cell, "MyListObject")
    End Sub
    
    private void AddListObject()
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Worksheet worksheet = Globals.Factory.GetVstoObject(
            Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Worksheet worksheet = 
        //     ((Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]).GetVstoObject();
    
        Microsoft.Office.Tools.Excel.ListObject list1;
        Excel.Range cell = worksheet.Range["$A$1:$D$4", missing];
        list1 = worksheet.Controls.AddListObject(cell, "list1");
    }
    

请参见

任务

如何:调整 ListObject 控件的大小

概念

在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿

ListObject 控件

使用扩展对象实现 Excel 自动化

宿主项和宿主控件概述

宿主项和宿主控件的编程限制

其他资源

Office 文档上的控件

将数据绑定到 Office 解决方案中的控件