使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
本文演示如何使用 Visual C# .NET 通过 ASP.NET (.aspx) 页查询和显示 Excel 工作表中的数据。
原始产品版本: ASP.NET
原始 KB 编号: 306572
创建示例 Excel 工作表
启动 Microsoft Excel,然后创建新工作表。
将以下信息添加到新工作表以创建 Excel 数据库:
行号 A B 1 FirstName LastName 2 斯科特 主教 3 凯蒂 约旦 注意
尽管本示例中数据以单元格 A1 开头,但您可以将此数据添加到工作表内的任何相邻单元格。
突出显示数据所在的行和列。
在 “插入 ”菜单上,指向 “名称”,然后单击“ 定义”。
在 “工作簿中的名称” 文本框中,键入 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”,然后单击“查看Designer”以显示页面外观的设计器。 设计器允许添加控件并操作页面的外观。
找到工具箱。 根据 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 工作表”部分中,在通常位于 C:\Inetpub\Wwwroot
的 Web 根目录中创建 ExcelData.xls。 这还会在 Wwwroot 文件夹中创建名为 ExcelCSTest 的子文件夹,并在_ExcelCSTest_folder中创建名为 WebForm1.aspx 的文件。
在此示例中,硬盘上的文件路径类似于 C:\Inetpub\Wwwroot\ExcelCSTest
。
Wwwroot 包含 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 文件在硬盘上的位置。
References
有关使用 ADO.NET 的详细信息,请参阅 如何使用 Visual C# .NET 从数据库填充数据集对象
注意
此处描述的示例公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件都是虚构的。 不应与任何真实的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点或事件关联,也不应推断。