下面是详细讲解“C#将Excel数据导入到数据库的实现代码”的完整攻略:
步骤一:准备工作
在使用C#程序实现将Excel数据导入到数据库前,我们需要确保以下条件:
-
安装Visual Studio软件,版本不一定要求,因为该功能在各个版本中都可以实现。
-
引用适用于Excel数据的组件,一般为“Microsoft.Office.Interop.Excel” 数据库组件,可以在“NuGet Package Manager”中搜索安装。
接下来,我们要做的是创建两个类:用于存放每列数据的“Model”类和用于导入数据的“Service”类。
步骤二:创建Model类
public class ExcelModel
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
上述代码用于存储从Excel表格中读取出来的三列数据。如果你的Excel表格中除了这些列以外还有其他列,可以自行在Model类中添加。
步骤三:创建Service类
首先,我们需要引入“Microsoft.Office.Interop.Excel”命名空间。在该类中,我们将写入读取Excel的方法,并将读出的数据添加到我们在第二步创建的Model类中。
以下是一个示例代码:
public class ExcelService
{
public static List<ExcelModel> ReadExcelFile(string filePath, string sheetName)
{
List<ExcelModel> excelData = new List<ExcelModel>();
Application excelApp = new Application();
Workbook excelWorkbook = excelApp.Workbooks.Open(filePath);
Worksheet excelWorksheet = excelWorkbook.Sheets[sheetName];
Range excelRange = excelWorksheet.UsedRange;
int rowCount = excelRange.Rows.Count;
int columnCount = excelRange.Columns.Count;
for (int row = 2; row <= rowCount; row++)
{
ExcelModel model = new ExcelModel();
for (int column = 1; column <= columnCount; column++)
{
object value = (excelRange.Cells[row, column] as Range).Value2;
switch (column)
{
case 1:
model.Name = value.ToString();
break;
case 2:
model.Age = int.Parse(value.ToString());
break;
case 3:
model.Gender = value.ToString();
break;
}
}
excelData.Add(model);
}
excelWorkbook.Close();
excelApp.Quit();
return excelData;
}
}
在该类中,我们创建了一个“ReadExcelFile”方法,该方法接收Excel文件路径和工作表名称作为输入参数。该方法将返回一个包含从Excel中读取的数据的“List
在该方法中,我们使用Open方法打开Excel文件,并使用“Worksheets”属性打开指定工作表。然后,我们使用“UsedRange”属性获取工作表中已使用的行数和列数。
接着,我们使用一个for循环遍历“UsedRange”中的每一列,将获取的值存储在Model类的属性中,最终将数据添加到List集合中并返回该集合。
步骤四:添加导入方法
下面是我们的示例代码:
public class ExcelDBService
{
public static bool ImportExcelDataToDB(string filePath, string sheetName)
{
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder();
connectionStringBuilder.DataSource = "your server name";
connectionStringBuilder.InitialCatalog = "your database name";
connectionStringBuilder.UserID = "your user id";
connectionStringBuilder.Password = "your password";
string connectionString = connectionStringBuilder.ConnectionString;
List<ExcelModel> excelData = ExcelService.ReadExcelFile(filePath, sheetName);
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction transaction = conn.BeginTransaction())
{
try
{
string sql = "INSERT INTO ExcelData(Name, Age, Gender) VALUES(@Name, @Age, @Gender)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Transaction = transaction;
foreach (ExcelModel model in excelData)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Name", model.Name);
cmd.Parameters.AddWithValue("@Age", model.Age);
cmd.Parameters.AddWithValue("@Gender", model.Gender);
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
return false;
}
}
}
return true;
}
}
在该代码片段中,我们创建了一个方法“ImportExcelDataToDB”,该方法接收Excel文件路径和工作表名称作为输入参数,并返回一个布尔值。
在该方法中,我们首先为SQL Server数据库连接字符串设置了各个必要的属性。接着,我们使用“ReadExcelFile”方法获取Excel数据并将其存储在一个List集合中。该方法将通过ForEach循环添加给定的Excel模型类的属性,然后将它们插入到数据库中的ExcelData表中。在整个过程中,我们会为每个excel数据行创建一个SqlCommand,最后检查事务中是否存在任何错误并相应地提交或回滚该事务。
步骤五:测试代码
测试代码如下:
static void Main(string[] args)
{
string filePath = @"your excel file path";
string sheetName = "Sheet1";
bool result = ExcelDBService.ImportExcelDataToDB(filePath, sheetName);
Console.WriteLine(result ? "成功将Excel数据导入数据库" : "在将Excel数据导入数据库期间发生错误");
}
在该代码段中,我们只是在控制台应用程序中使用ImportExcelDataToDB方法,并在其中传递Excel文件路径和需要导入的工作表名称。在该方法调用后,我们打印一个简单的成功或失败消息。
至此,我们详细讲解了“C#将Excel数据导入到数据库的实现代码”的完整攻略,包含两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#将Excel数据导入到数据库的实现代码 - Python技术站