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

原创 2004年09月09日 23:05:00

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

适用于
有关本文的 Microsoft Visual Basic .NET 版本,请参阅 311731

本文引用下面的 Microsoft .NET Framework 类库命名空间:
  • System.Data.OleDb

本任务的内容

概要

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

返回页首

创建示例 Excel 工作表

  1. 启动 Microsoft Excel,然后创建一个新的工作表。
  2. 将以下信息添加到新工作表中以创建一个简单的 Excel 数据库:
    A B
    1 FirstName LastName
    2 Scott Bishop
    3 Katie Jordan
    注意:虽然在本示例中数据是从单元格 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
  13.  the worksheet.
    
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", _
  14. 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();
    					
  15. 文件菜单中,单击全部保存来保存项目文件。
  16. 生成菜单上,单击生成以生成项目。这就准备好了代码隐藏页中的代码,使之能够执行了。
  17. 在解决方案资源管理器中,右键单击 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 信息服务 (IIS) 的路径,并返回该文件的硬盘路径。例如,在创建示例 Excel 工作表 部分中,您在 Web 根目录中创建了 ExcelData.xls,该目录通常位于 C:/Inetpub/Wwwroot。这还会在 Wwwroot 文件夹中创建名为 ExcelCSTest 的子文件夹,并在 ExcelCSTest 文件夹中创建名为 WebForm1.aspx 的文件。

在此示例中,硬盘上的文件路径如下:
C 驱动器
- Inetpub
- Wwwroot(其中包含 ExcelData.xls)
- ExcelCSTest(包含 WebForm1.aspx)
				
文件的 IIS 路径如下所示:
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 文件在硬盘上的位置。

返回页首

参考

有关使用 ASP.NET 访问 Excel 文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

307029 如何使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据

306023 如何使用 Visual C# .NET 向 Excel 工作簿传输数据

有关使用 ADO.NET 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

306636 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令

314145 如何使用 Visual C# .NET 从数据库填充 DataSet 对象

307587 如何使用 Visual C# .NET 从数据集对象更新数据库

注意:此处作为示例举出的公司、组织、产品、域名、电子邮件地址、徽标、人名、地名和事件完全是虚构的。决无意影射,也不应由此臆测任何真实的公司、组织、产品、域名、电子邮件地址、徽标、人名、地名和事件。

返回页首

这篇文章中的信息适用于:

  • Microsoft Excel 2002
  • Microsoft Excel 2000
  • Microsoft ASP.NET (included with the .NET Framework 1.1)
  • Microsoft ASP.NET (included with the .NET Framework) 1.0
  • Microsoft Visual C# .NET (2003)
  • Microsoft Visual C# .NET (2002)
  • Microsoft ADO.NET (included with the .NET Framework 1.1)
  • Microsoft ADO.NET (included with the .NET Framework)

在ADO.NET中使用参数化SQL语句的大同小异

在ADO.NET中使用参数化SQL语句的大同小异 标签: sqlstringsql servernullmysqlaccess 2008-03-19 01:26 15067人阅读 评论...
  • kasama1953
  • kasama1953
  • 2016年08月01日 00:59
  • 3323

asp.net 利用多表联合查询进行汇总统计

3张表相关联,按照各个地区用户统计每个栏目在某个时间段的上报数量和审核数量,表结构如下图所示:...
  • taomanman
  • taomanman
  • 2015年07月08日 17:54
  • 3086

C#使用Ado.Net读写数据库

记性不好,记几个C#读取显示数据库资料的方式,以便随时取用   try { String connStr = Confi...
  • gyming
  • gyming
  • 2013年12月24日 17:26
  • 12510

如何使用C#和ADO.NET在SQL Server数据库读取和写入blob数据

转自:http://support.microsoft.com/default.aspx?scid=kb;EN-US;309158 标题:How To Read and Write BLOB Dat...
  • Hugoo_Hu
  • Hugoo_Hu
  • 2012年11月20日 11:03
  • 486

ado.net entity framework使用不同的方法查询数据的不同性能

第一部分:重复查询单个实体   第一种:Linq To Entitiess   代码如下: !--   Code highlighting produced b...
  • taotaohuoli
  • taotaohuoli
  • 2012年06月27日 09:44
  • 493

Ado.Net操作Excel文件数据常见问题及解决

经常需要在数据库与Execl之间互导数据。net时代,ADO.NET可以使用使用Microsoft.Jet.OleDb访问访问Excel,网上已经有很多类似的资源,最典型也是最简单的可能如下:(asp...
  • llbt_gao
  • llbt_gao
  • 2012年03月19日 16:22
  • 396

如何使用 Visual C# .NET 对 DataGrid Windows 控件执行分页?

DataGrid Web 控件有内置的自动或自定义分页功能,而 DataGrid Windows 控件则没有。本文演示了如何为 DataGrid Windows 控件创建简单的分页机制。 本文...
  • keith_cheung
  • keith_cheung
  • 2013年02月10日 14:25
  • 438

HOW TO:使用 Visual C# .NET 打印 RichTextBox 控件的内容

概要本分步指南介绍了如何打印 RichTextBox 控件的内容。RichTextBox 控件没有提供任何打印 RichTextBox 内容的方法。您可以扩展 RichTextBox 类以使用 EM_...
  • BeiLinYu
  • BeiLinYu
  • 2015年05月07日 14:00
  • 546

HOW TO:使用 GetOleDbSchemaTable 和 Visual C# .NET 检索架构信息

本文的发布号曾为 CHS309681 展开全部 | 关闭全部 本页 概要 要求 OleDbConnection 对象的 GetOleDbSchemaTab...
  • zhandeen
  • zhandeen
  • 2012年10月22日 22:19
  • 266

C#命名规范,控件、数据类型、ADO.NET

  • 2011年04月11日 10:45
  • 25KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
举报原因:
原因补充:

(最多只允许输入30个字)