我建议使用 EPPlus 开源免费库,您可以通过 Nuget 安装或访问(https://www.nuget.org/packages/EPPlus/)无需安装 Excel 或任何其他 Interops 即可读取 Excel 文件。
下面是使用 Epplus 的更新代码。我假设你的Excel文件中没有标题行(如果你只是将var row = 1更改为var row = 2,这意味着从第2行开始并忽略标题)
using (var con = new SqlConnection(@"Data Source=NT;Initial Catalog=StudentDB;Integrated Security=True"))
{
con.Open();
var excelFile = new FileInfo(@"TestFile.xlsx");
using (var epPackage = new ExcelPackage(excelFile))
{
var worksheet = epPackage.Workbook.Worksheets.First();
for (var row = 1; row <= worksheet.Dimension.End.Row; row++)
{
var rowValues = worksheet.Cells[row, 1, row, worksheet.Dimension.End.Column];
var cmd = new SqlCommand("INSERT INTO Persons(ContactID, FirstName, SecondName, Age) VALUES (@contactid, @firstname, @secondname, @age)", con);
cmd.Parameters.AddWithValue("@contactid", rowValues["A1"].Value);
cmd.Parameters.AddWithValue("@firstname", rowValues["B1"].Value);
cmd.Parameters.AddWithValue("@secondname", rowValues["C1"].Value);
cmd.Parameters.AddWithValue("@age", rowValues["D1"].Value);
cmd.ExecuteNonQuery();
}
}
}
AddWithValue 中的某些参数与您在插入语句中声明的参数不匹配,我也清理了这些参数。使用代码,我能够读取我创建的测试 xlsx 文件,以匹配您的布局并将其插入数据库。希望能帮助到你。