導入Excel數據到MySQL是很常見的一個需求,本文介紹如何使用C#語言實現這個功能。
在開始之前,需要安裝MySql.Data和ExcelDataReader兩個Nuget包。安裝完以后就可以通過以下代碼來引用它們:
using MySql.Data.MySqlClient;
using ExcelDataReader;
接下來,需要創建一個數據庫連接和Excel文件路徑的字符串:
//數據庫連接字符串
string connStr ="server=localhost;database=數據庫名;user=用戶名;password=密碼;Charset=utf8;";
//Excel文件路徑
string path = "E:\\test.xlsx";
使用ExcelDataReader包中的ExcelReaderFactory類來讀取Excel文件,并將數據存儲在DataTable對象中:
//讀取Excel文件,存儲數據到DataTable
using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
//使用結果集創建一個DataTable
var result = reader.AsDataSet(new ExcelDataSetConfiguration
{
UseColumnDataType = true,
ConfigureDataTable = _ =>new ExcelDataTableConfiguration
{
UseHeaderRow = true
}
});
//獲取表數據
DataTable tableName = result.Tables[0];
}
}
這里使用了ExcelDataSetConfiguration和ExcelDataTableConfiguration來配置數據的讀取行為。如果Excel文件的第一行是字段名,則可以將ExcelDataTableConfiguration的UseHeaderRow屬性設置為true來自動讀取字段名。
使用MySql.Data包中的MySqlConnection和MySqlCommand類來連接數據庫并將數據插入到MySQL表中:
//創建MySqlConnection對象
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
//使用MySqlCommand對象執行MySQL語句
MySqlCommand cmd = conn.CreateCommand();
foreach(DataRow dataRow in tableName.Rows)
{
cmd.CommandText = "INSERT INTO `表名`(`字段1`,`字段2`,`字段3`) " +
"VALUES (@字段1,@字段2,@字段3)";
cmd.Parameters.AddWithValue("@字段1", dataRow[0]);
cmd.Parameters.AddWithValue("@字段2", dataRow[1]);
cmd.Parameters.AddWithValue("@字段3", dataRow[2]);
cmd.ExecuteNonQuery();
}
//關閉MySqlConnection對象
conn.Close();
在上面的代碼中,每一行數據都被插入到MySQL表中。根據情況,還可以使用其他的插入操作和MySqlCommand對象可用的其他方法。
通過本文,我們了解了如何將C#中的Excel數據導入到MySQL數據庫。使用ExcelDataReader和MySql.Data這兩個Nuget包可以簡單、快速地實現這一功能。