ASP.NET 实现读取与显示Excel数据代码示例

0 下载量 150 浏览量 更新于2024-08-31 收藏 145KB PDF 举报
"ASP.NET 实现读取并显示Excel数据的代码示例" 在ASP.NET中,有时我们需要从Excel文件中读取数据并在网页上显示。这个任务可以通过使用多种库和方法来完成,其中一个常见的方法是使用ADO.NET连接到Excel工作簿。下面的代码示例演示了如何在ASP.NET页面中实现这一功能。 首先,用户需要将Excel文件上传到服务器。这通常通过HTML表单和文件上传控件来实现。以下是一个简单的上传表单的HTML部分: ```html <form id="form1" runat="server"> <div> <table style="padding: 5px;font-size: 11px;" align="center" border="0"> <tbody> <tr> <td> <strong>请选择包含工作详情的Excel文件...</strong> </td> </tr> <tr> <td> <input type="file" id="excelFile" name="excelFile" /> <input type="submit" value="上传并读取数据" /> </td> </tr> </tbody> </table> </div> </form> ``` 接下来,我们需要处理文件上传并在服务器端读取Excel数据。在VB.NET中,这可以通过`System.Data.OleDb`命名空间中的`OleDbConnection`和`OleDbCommand`类来完成。以下是一段VB.NET代码示例,展示了如何读取Excel数据: ```vb Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not IsPostBack Then ' 清除已有的数据显示 GridView1.DataSource = Nothing GridView1.DataBind() Else If Request.Files.Count > 0 Then Dim excelFile As HttpPostedFile = Request.Files("excelFile") If Not String.IsNullOrEmpty(excelFile.FileName) Then ' 检查文件是否为Excel格式 If (Path.GetExtension(excelFile.FileName).ToLower() = ".xls" OrElse Path.GetExtension(excelFile.FileName).ToLower() = ".xlsx") Then ' 保存上传的文件 excelFile.SaveAs(Server.MapPath("~/Uploads/") & excelFile.FileName) ' 构建数据库连接字符串 Dim connString As String = Nothing If excelFile.FileName.EndsWith(".xls", StringComparison.OrdinalIgnoreCase) Then connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("~/Uploads/") & excelFile.FileName & ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"";" ElseIf excelFile.FileName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase) Then connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/Uploads/") & excelFile.FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";" End If ' 创建并打开数据库连接 Using conn As New OleDbConnection(connString) conn.Open() ' 获取第一个工作表的名称 Dim sheetName As String = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)("TABLE_NAME") ' 创建SQL查询 Dim sql As String = "SELECT * FROM [" & sheetName & "]" ' 创建并执行SQL命令 Using cmd As New OleDbCommand(sql, conn) Dim adapter As New OleDbDataAdapter(cmd) Dim dt As New DataTable() adapter.Fill(dt) ' 绑定数据到GridView GridView1.DataSource = dt GridView1.DataBind() End Using conn.Close() End Using Else ' 显示错误信息:不是有效的Excel文件 Response.Write("上传的文件不是有效的Excel文件,请重新选择。") End If End If End If End If End Sub ``` 这段代码首先检查上传的文件是否为Excel格式,然后保存文件到服务器的特定目录。接着,它根据文件的扩展名(`.xls` 或 `.xlsx`)构建相应的OleDb连接字符串,并打开连接。然后,它获取Excel文件的第一个工作表的名称,构造SQL查询,并执行查询以填充一个`DataTable`。最后,这个数据绑定到一个名为`GridView1`的数据控件,用于在网页上显示数据。 请注意,这个示例仅处理第一个工作表,并且没有处理可能出现的异常。在实际应用中,你应该添加适当的错误处理和验证,确保文件安全性和数据完整性。此外,对于大量的数据,考虑使用分页或其他优化技术,以提高性能和用户体验。