ASP.NET实现Excel数据高效导入数据库的方法与步骤。
- 行业动态
- 2025-03-04
- 3
EPPlus
和
Dapper
。,2. 使用 EPPlus 读取 Excel 文件,提取数据。,3. 使用 Dapper 将数据插入到数据库中。“`csharp,using (var package = new ExcelPackage(new FileInfo(“path_to_excel.xlsx”))),{, var worksheet = package.Workbook.Worksheets[0];, var rowCount = worksheet.Dimension.Rows;, for (int row = 2; row
在ASP.NET中,将EXCEL数据导入到数据库是一个常见的需求,特别是在处理大量数据或需要从外部文件批量导入数据时,以下是实现这一功能的详细步骤和方法:

方法一:使用OleDbConnection和DataTable
创建ASP.NET页面和控件
创建一个ASP.NET页面,并在页面上添加一个FileUpload控件用于选择Excel文件,以及一个Button控件用于触发上传操作。
<div style="margin-top: 0px; margin-left: 0px;"> <asp:Label ID="Label1" runat="server" Text="文件:" Width="60px"></asp:Label> <asp:FileUpload ID="fulImport" runat="server" Height="20px" Width="450px" /> <asp:Button ID="btnImport" runat="server" Text="一键上传" Width="80px" Height="20px" OnClick="btnImport_Click" /> </div>
后台代码处理
在后台代码中,首先需要将Excel文件上传到服务器,然后将Excel数据读取到DataTable中,最后将DataTable中的数据插入到数据库中。

a. 上传Excel文件到服务器
protected string GetExcel() { string fileUrl = ""; try { string excelFile = this.fulImport.PostedFile.FileName; string fileName = Path.GetFileNameWithoutExtension(fulImport.PostedFile.FileName); string extentionName = excelFile.Substring(excelFile.LastIndexOf(".") + 1); if (fileName == "" || fileName == null) { Response.Write("<script>alert('请先选择Excel文件!')</script>"); return null; } if (extentionName != "xls" && extentionName != "xlsx") { Response.Write("<script>alert('您上传的不是Excel文件!')</script>"); return null; } string dateTime = DateTime.Now.Date.ToString("yyyyMMdd"); string time = DateTime.Now.ToShortTimeString().Replace(":", ""); string newFileName = dateTime + time + DateTime.Now.Millisecond.ToString() + ".xls"; ; fileUrl = Server.MapPath("..\excel") + "\" + newFileName; this.fulImport.PostedFile.SaveAs(fileUrl); return fileUrl; } catch { Response.Write("<script>alert('数据上传失败,请重新导入')</script>"); return null; } }
b. 读取Excel数据到DataTable
protected System.Data.DataTable GetExcelDatatable(string fileUrl) { const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; System.Data.DataTable dt = null; OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl)); if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed) { conn.Open(); } System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString(); string query = "SELECT FROM [" + sheetName + "]"; OleDbDataAdapter myCommand = new OleDbDataAdapter(query, conn); dt = new System.Data.DataTable(); myCommand.Fill(dt); conn.Close(); return dt; }
c. 将DataTable数据插入到数据库

protected void InsetData(System.Data.DataTable dt) { // 假设已经有一个数据库连接字符串和插入方法 string connectionString = "your_connection_string"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); for (int i = 0; i < dt.Rows.Count; i++) { // 根据dt中的列名和数据库表结构构建SQL语句或使用参数化查询插入数据 // 这里以简单示例说明,实际应根据具体表结构调整 string sql = "INSERT INTO your_table (column1, column2, column3) VALUES (@value1, @value2, @value3)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@value1", dt.Rows[i]["Column1"].ToString()); cmd.Parameters.AddWithValue("@value2", dt.Rows[i]["Column2"].ToString()); cmd.Parameters.AddWithValue("@value3", dt.Rows[i]["Column3"].ToString()); cmd.ExecuteNonQuery(); } } } }
d. 按钮点击事件处理
protected void btnImport_Click(object sender, EventArgs e) { string fileUrl = this.GetExcel(); if (fileUrl != null) { this.InsetData(this.GetExcelDatatable(fileUrl)); Response.Write("<script>alert('数据导入成功!')</script>"); } }
方法二:使用NPOI库
NPOI是一个开源的.NET库,用于操作Excel文件(包括xls和xlsx格式),使用NPOI库可以更灵活地处理Excel数据,而无需依赖OleDbConnection。
安装NPOI库
通过NuGet包管理器安装NPOI库。
Install-Package NPOI
2. 读取Excel文件并导入数据到数据库
使用NPOI库读取Excel文件,并将数据逐行读取后插入到数据库中,以下是一个简化的示例:
using System; using System.Data; using System.Data.SqlClient; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; protected void ImportExcelToDatabase(string filePath) { IWorkbook workbook; using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { workbook = new XSSFWorkbook(file); // 对于xlsx文件 // workbook = new HSSFWorkbook(file); // 对于xls文件 ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表 for (int rowIndex = 1; rowIndex <= sheet.LastRowNum; rowIndex++) { IRow row = sheet.GetRow(rowIndex); if (row != null) { string column1 = row.GetCell(0).StringCellValue; string column2 = row.GetCell(1).StringCellValue; // 根据实际列数和数据类型获取单元格值 // 构建SQL语句或使用参数化查询插入数据到数据库 string connectionString = "your_connection_string"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "INSERT INTO your_table (column1, column2) VALUES (@column1, @column2)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@column1", column1); cmd.Parameters.AddWithValue("@column2", column2); cmd.ExecuteNonQuery(); } } } } } }
两种方法都可以实现将Excel数据导入到ASP.NET应用程序的数据库中,方法一使用了OleDbConnection和DataTable,适用于简单的Excel导入需求;方法二使用了NPOI库,提供了更多的灵活性和功能,适用于复杂的Excel处理场景,根据具体需求选择合适的方法,并确保在生产环境中处理好异常和安全性问题,以下是两个关于ASP.NET中EXCEL数据导入到数据库的方法的FAQs:
FAQ 1: 如何在ASP.NET中将Excel数据导入到数据库?
回答: 在ASP.NET中将Excel数据导入到数据库可以通过多种方式实现,其中两种常见的方法是使用OleDbConnection配合DataTable,或者使用第三方库如NPOI,使用OleDbConnection时,首先需要将Excel文件上传到服务器,然后通过OleDbConnection连接到Excel文件,并将数据读取到DataTable中,最后将DataTable中的数据插入到数据库,使用NPOI库时,可以直接在服务器端读取Excel文件,并通过NPOI提供的对象模型遍历Excel数据,然后将其插入到数据库中,具体选择哪种方法取决于项目需求和复杂度。
FAQ 2: 使用NPOI库将Excel数据导入到数据库有哪些优势?
回答: 使用NPOI库将Excel数据导入到数据库具有多项优势,NPOI库是专门用于操作Office文档的开源库,支持Excel、Word等多种格式,因此在处理Excel文件时具有天然的优势,NPOI库提供了丰富的API和对象模型,可以方便地读取、写入和修改Excel文件的内容,包括单元格样式、数据格式等,使用NPOI库还可以避免在服务器上安装Office软件的需求,降低了环境配置的复杂性和成本,NPOI库具有良好的跨平台性,可以在不同操作系统上运行,提高了项目的可移植性。