C#实现Excel表数据导入Sql Server数据库中的方法
我们可以使用C#编写代码将Excel表中的数据导入到Sql Server数据库中,下面是具体的步骤。
步骤一:连接到Excel表格
首先,我们需要创建一个连接字符串,并使用OleDbConnection
类将其连接到Excel表格。下面是连接字符串的两个示例:
string connectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\MyExcel.xlsx;Extended Properties=" +
"\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
或者
string connectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyExcel.xls;Extended Properties=" +
"\"Excel 8.0;HDR=YES;IMEX=1;\"";
步骤二:从Excel表获取数据
接下来,我们可以使用OleDbDataAdapter
类从Excel表中获取数据,并将数据保存在DataTable
对象中。下面是示例代码:
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();
}
步骤三:连接到Sql Server数据库
现在,我们需要创建一个新的连接字符串,并使用SqlConnection
类将其连接到Sql Server数据库。下面是连接字符串的一个示例:
string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True;";
步骤四:将数据插入到Sql Server数据库中
最后,我们可以使用SqlBulkCopy
类将数据批量插入到Sql Server数据库中。下面是示例代码:
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlBulkCopy bc = new SqlBulkCopy(conn);
bc.DestinationTableName = "MyTable";
bc.WriteToServer(dt);
conn.Close();
}
这段代码将数据表dt
中的所有行插入到名为MyTable
的Sql Server表中。
示例一:从Excel表格导入数据到Sql Server数据库
下面是一个完整的示例代码,它将Excel表中的数据导入到Sql Server数据库中:
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data;
string excelFile = @"C:\MyExcel.xlsx";
string connectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + ";Extended Properties=" +
"\"Excel 12.0 Xml;HDR=YES;IMEX=1;\"";
string sqlConnectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True;";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();
using (SqlConnection sqlConn = new SqlConnection(sqlConnectionString))
{
sqlConn.Open();
SqlBulkCopy bc = new SqlBulkCopy(sqlConn);
bc.DestinationTableName = "MyTable";
bc.WriteToServer(dt);
sqlConn.Close();
}
}
示例二:使用CSV文件导入
我们也可以使用CSV文件来导入数据到Sql Server数据库中。下面是一个示例代码:
using System.IO;
using System.Data.SqlClient;
using System.Data;
string csvFile = @"C:\MyCsv.csv";
string sqlConnectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True;";
DataTable dataTable = new DataTable();
using (StreamReader sr = new StreamReader(csvFile))
{
string[] headers = sr.ReadLine().Split(',');
foreach (string header in headers)
{
dataTable.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(',');
DataRow dataRow = dataTable.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dataRow[i] = rows[i];
}
dataTable.Rows.Add(dataRow);
}
}
using (SqlConnection sqlConn = new SqlConnection(sqlConnectionString))
{
sqlConn.Open();
SqlBulkCopy bc = new SqlBulkCopy(sqlConn);
bc.DestinationTableName = "MyTable";
bc.WriteToServer(dataTable);
sqlConn.Close();
}
在这个示例中,我们使用StreamReader
类读取CSV文件,并将结果保存在DataTable
对象中。然后,我们使用SqlBulkCopy
类将数据批量插入到Sql Server数据库中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现Excel表数据导入Sql Server数据库中的方法 - Python技术站