使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据

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

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

创建示例 Excel 工作表

  1. 开始Microsoft Excel,然后创建新工作表。

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

    行号 A B
    1 名字 姓氏
    2 斯科特 主教
    3 Katie 约旦

    注意

    尽管数据以本示例中的单元格 A1 开头,但可以将此数据添加到工作表中的任何相邻单元格。

  3. 突出显示数据所在的行和列。

  4. “插入 ”菜单上,指向 “名称”,然后单击“ 定义”。

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

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

  7. “文件” 菜单中,单击 “退出”

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

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

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

  2. “文件” 菜单上,指向 “新建” ,然后单击 “项目”

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

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

    注意

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

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

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

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

  8. 当 Web 窗体的设计器视图处于活动状态时,工具箱分为多个部分,包括 Web 窗体组件HTML 和其他部分。 单击“Web 窗体”部分。

  9. 工具箱的“Web 窗体”部分中,单击“DataGrid”,然后将其拖到 WebForm1设计器上。

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

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

    using System.Data.OleDb;
    using System.Data;
    
  12. 突出显示以下代码,右键单击代码,然后单击“ 复制”。 在 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();
    
  13. “文件”菜单上,单击“全部保存”以保存项目文件。

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

  15. 在解决方案资源管理器中,右键单击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 根目录中创建 ExcelData.xls ,该目录通常位于 C:\Inetpub\WwwrootWeb 根目录中。 这还会在 Wwwroot 文件夹中创建名为 ExcelCSTest子文件夹,并在_ExcelCSTest_folder中创建名为 WebForm1 的文件.aspx。

在此示例中,硬盘上的文件路径类似于 C:\Inetpub\Wwwroot\ExcelCSTestWwwroot 包含ExcelData.xls,ExcelCSTest 包含WebForm1.aspx

文件的 IIS 路径类似于 C:\Web Root\ExcelCSTest。 Web 根包含ExcelData.xls,ExcelCSTest 包含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 从数据库填充数据集对象

注意

此处描述的示例公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件均属虚构。 无意与任何真实的公司、组织、产品、域名、电子邮件地址、徽标、人物、地点或事件相关联,也不应进行这方面的推断。