在.NET框架中,批量将Excel数据导入SQL数据库是一个常见且实用的操作。这不仅可以帮助我们快速迁移数据,还能在数据处理和分析中节省大量时间。下面,我将详细介绍如何使用.NET框架高效地完成这一任务。
准备工作
在开始之前,请确保以下准备工作已经完成:
- 安装.NET开发环境。
- 有一个Excel文件,其中包含需要导入的数据。
- 有一个SQL数据库,且已创建好相应的表。
- 有.NET项目中引用必要的NuGet包,如
EPPlus和Dapper。
使用EPPlus读取Excel文件
EPPlus是一个开源的.NET库,用于读写Excel 2007/2010/2013文件。以下是使用EPPlus读取Excel文件的步骤:
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
public DataTable ReadExcelFile(string filePath)
{
using (var package = new ExcelPackage(new FileInfo(filePath)))
{
var worksheet = package.Workbook.Worksheets[0];
DataTable dataTable = new DataTable();
// 读取列名
foreach (var firstRowCell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column])
{
dataTable.Columns.Add(firstRowCell.Text);
}
// 读取数据行
for (int rowNum = 2; rowNum <= worksheet.Dimension.End.Row; rowNum++)
{
var row = worksheet.Cells[rowNum, 1, rowNum, worksheet.Dimension.End.Column];
var dataRow = dataTable.NewRow();
foreach (var cell in row)
{
dataRow[cell.Start.Column - 1] = cell.Text;
}
dataTable.Rows.Add(dataRow);
}
return dataTable;
}
}
使用Dapper将数据批量插入SQL数据库
Dapper是一个高性能的ORM库,可以简化数据库操作。以下是如何使用Dapper将数据批量插入SQL数据库的步骤:
using Dapper;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading.Tasks;
public async Task InsertDataAsync(string connectionString, DataTable dataTable)
{
using (var connection = new SqlConnection(connectionString))
{
await connection.OpenAsync();
var command = connection.CreateCommand();
command.CommandText = "INSERT INTO YourTable (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)";
command.CommandType = CommandType.Text;
foreach (DataRow row in dataTable.Rows)
{
command.Parameters.Clear();
command.Parameters.AddWithValue("@Column1", row["Column1"]);
command.Parameters.AddWithValue("@Column2", row["Column2"]);
command.Parameters.AddWithValue("@Column3", row["Column3"]);
await command.ExecuteNonQueryAsync();
}
}
}
整合以上步骤
现在,我们可以将以上步骤整合到一个方法中,实现批量导入Excel数据到SQL数据库:
public async Task ImportExcelToDatabaseAsync(string excelFilePath, string connectionString)
{
DataTable dataTable = ReadExcelFile(excelFilePath);
await InsertDataAsync(connectionString, dataTable);
}
总结
通过以上步骤,我们可以轻松地使用.NET框架将Excel数据批量导入SQL数据库。EPPlus和Dapper库为我们提供了强大的功能和便捷的操作方式。在实际应用中,可以根据具体需求对代码进行调整和优化。
