将数据从Excel文件移动到数据库

本文关键字:移动 数据库 文件 Excel 数据 | 更新日期: 2023-09-27 18:20:50

我是MVC ASP.NET的新手,正在尝试从Excel文件导入数据并将其加载到数据库中。

数据库已创建,其列名与Excel文件中的信息匹配。当我上传Excel文件并点击提交时,我得到错误:

初始化字符串的格式不符合规范

根据调试,故障位于以下行,目前甚至不确定其余代码是否正确:

excelConnection.Open();

查找了类似的错误问题,但答案不起作用。此部分的完整代码:

//Code at Controller and cshtml
public ActionResult Import()
    {
        return View();
    }
    public ActionResult ImportExcel()
    {
        try
        {
            if (Request.Files["FileUpload1"].ContentLength > 0)
            {
                string extension = Path.GetExtension(Request.Files["FileUpload1"].FileName);
                string path1 = string.Format("{0}/{1}", Server.MapPath("~/App_Data/uploads"), Request.Files["FileUpload1"].FileName);
                if (System.IO.File.Exists(path1))
                    System.IO.File.Delete(path1);
                Request.Files["FileUpload1"].SaveAs(path1);
                string sqlConnectionString = @"Data Source=(LocalDb)'MSSQLLocalDB;AttachDbFilename=|DataDirectory|'ExampleDB.mdf;Initial Catalog=aspnet-FormulaOne-20151105055609;Integrated Security=True";
                //Create connection string to Excel work book
                string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=Excel 12.0;Persist Security Info=False, HDR=YES";
                //Create Connection to Excel work book
                OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
                //Create OleDbCommand to fetch data from Excel
                OleDbCommand cmd = new OleDbCommand("Select [Speed],[Average],[Power],[Comment] from [Sheet1$]", excelConnection);
                //ERROR OCCURING AT THIS LINE
                excelConnection.Open();
                OleDbDataReader dReader;
                dReader = cmd.ExecuteReader();
                SqlBulkCopy sqlBulk = new SqlBulkCopy(sqlConnectionString);
                //Give your Destination table name
                sqlBulk.DestinationTableName = "Stats";
                sqlBulk.WriteToServer(dReader);
                excelConnection.Close();
                // SQL Server Connection String
            }
            return RedirectToAction("Import");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.StackTrace.ToString());
            return RedirectToAction("Import");
        }
    }
 }
@using (Html.BeginForm("Importexcel", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <table>
        <tr><td>Excel file</td><td><input type="file" id="FileUpload1" name="FileUpload1" /></td></tr>
        <tr><td></td><td><input type="submit" id="Submit" name="Submit" value="Submit" /></td></tr>
    </table>
}

将数据从Excel文件移动到数据库

我认为你的问题是程序无法正确找到excel文件,我建议使用OleDbConnection

            //path to your file
            string path = @"D:'your'path'to'excel'file.xlsx";
            // noitice that parameter HRD=YES if your file has header
            string connStr = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES""", path);

            using (OleDbConnection connection = new OleDbConnection(connStr))
                {
                   connection.Open();
                   // ensure that sheet name is correct
                   OleDbCommand command = new OleDbCommand("select * from [sheet$]", connection);
                   using (OleDbDataReader dr = command.ExecuteReader())
                       {
                          // here you can access rows and insert them respectively
                          //first column , first row
                          var name = dr[0].toString();
                          //second column , first row
                          var lastname = dr[1].toString();
                          //here you can do anything with this variables (ex insert to db)
                       }
                }