本文演示如何使用 Visual C# .NET 通过 ASP.NET (.aspx) 页查询和显示 Excel 工作表中的数据。

原始产品版本: ASP.NET
原始 KB 编号: 306572

创建示例 Excel 工作表

  • 启动 Microsoft Excel,然后创建新的工作表。

  • 将以下信息添加到新工作表以创建 Excel 数据库:

  • 工作簿文本框中的“名称 ”中,键入 myRange1 ,然后单击 “确定 ”。

  • 在“文件” 菜单上,单击“保存” 。 在 “保存中 ”列表中,选择通常 C:\InetPub\Wwwroot\ ) 的 Web 服务器根 (。 在 “文件名 ”文本框中,键 入ExcelData.xls 。 单击 “确定”。

  • 文件 菜单上,单击 退出

    使用 Visual C# .NET 创建 ASP.NET 示例

    此代码示例演示如何在 Excel 工作表中查询和显示信息。 以下代码使用在上一部分中创建的工作表。

  • 打开 Microsoft Visual Studio .NET。 将显示 Visual Studio .NET 集成开发环境 (IDE) 。

  • 在"文件"菜单上,指向"新建",然后单击"项目"。

  • “新建项目 ”对话框的 “项目类型 ”下,单击 “Visual C# 项目 ”。 在 “模板 ”下,单击 ASP.NET Web 应用程序

  • “新建项目 ”对话框中,找到 “名称 位置 ”文本框。

  • “名称” 文本框在显示灰显或灰显) (不可用。 “ 位置 ”文本框包含文本 (或类似的) http://localhost/WebApplication1
  • “位置 ”文本框中的文本替换为 http://localhost/ExcelCSTest “确定”,然后单击 “确定 ”。 将创建一个新项目,其中包括一个名为 WebForm1.aspx 的 Web 窗体。
  • 在 Visual Studio .NET IDE 中,找到 解决方案资源管理器 窗口。 如果找不到,请单击 “视图 ”菜单上的 解决方案资源管理器

  • 解决方案资源管理器 中,右键单击 WebForm1.aspx ,然后单击 “视图设计器 ”以显示页面外观的设计器。 设计器允许添加控件并操作页面的外观。

  • 找到工具箱。 根据 IDE 选项设置,工具箱可以显示为窗口或按钮 (通常显示在 IDE) 的左侧。 如果找不到工具箱,请单击 “视图 ”菜单上的 工具箱

    如果工具箱显示为按钮,请将指针移到按钮上,以便显示工具箱的内容。

  • 当 Web 窗体的设计器视图处于活动状态时,工具箱将分为部分,包括 Web Forms 组件 HTML 和其他部分。 单击 Web Forms 部分。

  • 在工具箱 的“Web Forms ”部分中,单击 DataGrid ,然后将其拖到 WebForm1 的设计 器上。

  • 右键单击 WebForm1.aspx ,然后单击 “查看代码 ”以显示代码隐藏页源。

  • 将以下语句添加到命名空间部分上方的代码隐藏页顶部:

    using System.Data.OleDb;
    using System.Data;
    
  • 突出显示以下代码,右键单击代码,然后单击 “复制”。 在 WebForm1.aspx.cs 中,将代码粘贴到事件中 Page_Load

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    // Open connection with the database.
    objConn.Open();
    // The code to follow uses a SQL SELECT command to display the data from the worksheet.
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    // Create new OleDbDataAdapter that is used to build a DataSet
    // based on the preceding SQL SELECT statement.
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    // Pass the Select command to the adapter.
    objAdapter1.SelectCommand = objCmdSelect;
    // Create new DataSet to hold information from the worksheet.
    DataSet objDataset1 = new DataSet();
    // Fill the DataSet with the information from the worksheet.
    objAdapter1.Fill(objDataset1, "XLData");
    // Bind data to DataGrid control.
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    // Clean up objects.
    objConn.Close();
    
  • “文件” 菜单上,单击 “全部保存 ”以保存项目文件。

  • 在“ 生成 ”菜单上,单击 “生成 ”以生成项目。 此步骤在代码隐藏页中准备代码,以便执行该代码。

  • 在解决方案资源管理器中,右键单击 WebForm1.aspx,然后单击“浏览器中的视图”以运行代码。

    其他代码说明

    本文中的代码示例使用 Microsoft Jet OLE DB 提供程序访问 Excel 工作表。 此代码使用以下连接字符串连接到工作表:

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    

    如注释所示,必须修改特定 Excel 工作表的路径信息。 此外,还必须设置参数的 Extended Properties 值才能正确连接到文件。

    连接字符串使用函数 Server.MapPath 。 此函数采用相对于Microsoft Internet Information Services (IIS) 文件的路径,并返回该文件的硬盘路径。 例如,在“创建示例 Excel 工作表”部分中,在 Web 根目录(通常位于C:\Inetpub\Wwwroot)中创建ExcelData.xls。 这还会在 Wwwroot 文件夹中创建名为 ExcelCSTest 的子文件夹,并在_ExcelCSTest_folder中创建名为 WebForm1.aspx 的文件。

    在此示例中,硬盘上的文件路径如下所示 C:\Inetpub\Wwwroot\ExcelCSTestWwwroot 包含 ExcelData.xlsExcelCSTest 包含 WebForm1.aspx

    文件的 IIS 路径如下所示 C:\Web Root\ExcelCSTestWeb 根包含ExcelData.xlsExcelCSTest 包含 WebForm1.aspx

    在这种情况下,从 WebForm1.aspx 页到 ExcelData.xls 文件的相对路径为 .。/ExcelData.xls. ../字符通知 IIS 上一个文件夹级别。 因此,代码 Server.MapPath("../ExcelData.xls") 返回以下字符串:

    C:\Inetpub\Wwwroot\ExcelData.xls
    

    不需要使用 Server.MapPath。 还可以将此信息硬编码为特定路径,也可以使用任何方法在硬盘上提供 Excel 文件的位置。

    有关使用 ADO.NET 的详细信息,请参阅 如何使用 Visual C# .NET 从数据库填充 DataSet 对象

    此处描述的示例公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件都是虚构的。 与任何真正的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点或事件没有任何关联,也不应推断。

  •