📅  最后修改于: 2023-12-03 15:11:47.323000             🧑  作者: Mango
在编写应用程序时,我们通常需要使用一些外部数据源,比如在Excel表格中维护的数据。为了使程序和数据源之间的数据交流更方便,我们可以将Excel数据导入到SQL Server数据库中。本文将介绍如何自动将数据从Excel导入SQL Server。
我们需要使用以下工具:
首先,我们需要在SQL Server中创建一个表来存储Excel数据。假设我们要导入的Excel文件中包含以下几列数据:
| ID | 姓名 | 年龄 | | --- | ---- | ---- | | 1 | 张三 | 20 | | 2 | 李四 | 22 | | 3 | 王五 | 25 |
我们可以使用以下SQL语句在SQL Server中创建一个表:
CREATE TABLE Person
(
Id INT,
Name NVARCHAR(50),
Age INT
)
接下来,我们将创建一个C#工程来自动将Excel数据导入到SQL Server中。我们可以使用Visual Studio进行开发。
步骤:
我们将使用以下步骤来将Excel数据导入到SQL Server中。
using System.Data.SqlClient;
using Microsoft.Office.Interop.Excel;
using System.Configuration;
using System.Data;
<configuration>
<appSettings>
<add key="SqlConnectionString"
value="Data Source=myServerAddress;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;"/>
</appSettings>
</configuration>
在应用程序中,使用以下代码来获取连接字符串:
string connectionString = ConfigurationManager.AppSettings["SqlConnectionString"];
Application application = new Application();
Workbook workbook = application.Workbooks.Open("Excel文件路径");
Worksheet worksheet = (Worksheet)workbook.Sheets[1];
Range usedRange = worksheet.UsedRange;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("INSERT INTO Person(Id, Name, Age) VALUES(@Id, @Name, @Age)", connection);
for (int row = 2; row <= usedRange.Rows.Count; row++)
{
int id = int.Parse(((Range)usedRange.Cells[row, 1]).Value2.ToString());
string name = ((Range)usedRange.Cells[row, 2]).Value2.ToString();
int age = int.Parse(((Range)usedRange.Cells[row, 3]).Value2.ToString());
command.Parameters.AddWithValue("@Id", id);
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@Age", age);
command.ExecuteNonQuery();
command.Parameters.Clear();
}
connection.Close();
}
最终的C#代码如下所示:
using System;
using System.Data.SqlClient;
using Microsoft.Office.Interop.Excel;
using System.Configuration;
using System.Data;
namespace ExcelToSqlServer
{
class Program
{
static void Main(string[] args)
{
string connectionString = ConfigurationManager.AppSettings["SqlConnectionString"];
Application application = new Application();
Workbook workbook = application.Workbooks.Open(@"Excel文件路径");
Worksheet worksheet = (Worksheet)workbook.Sheets[1];
Range usedRange = worksheet.UsedRange;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("INSERT INTO Person(Id, Name, Age) VALUES(@Id, @Name, @Age)", connection);
for (int row = 2; row <= usedRange.Rows.Count; row++)
{
int id = int.Parse(((Range)usedRange.Cells[row, 1]).Value2.ToString());
string name = ((Range)usedRange.Cells[row, 2]).Value2.ToString();
int age = int.Parse(((Range)usedRange.Cells[row, 3]).Value2.ToString());
command.Parameters.AddWithValue("@Id", id);
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@Age", age);
command.ExecuteNonQuery();
command.Parameters.Clear();
}
connection.Close();
}
workbook.Close(false, Type.Missing, Type.Missing);
application.Quit();
Console.WriteLine("数据导入成功!");
Console.ReadKey();
}
}
}
本文介绍了如何自动将数据从Excel导入SQL Server。我们学习了如何创建SQL表、如何使用C#代码将Excel数据插入SQL Server中,并且我们学习了如何使用Visual Studio和.NET Framework开发应用程序。