繁体   English   中英

将数据从本地 excel 文件加载到 ASP.NET MVC web 应用程序以存储在数据库中

[英]Load data from local excel file to an ASP.NET MVC web app to store in database

  1. 当我运行 Web 应用程序时,我想自动打开我计算机上的一个 Excel 文件,从中获取数据,并在我的数据库中使用 Entity Framework 和 C# 创建一个表
  2. 然后我想将从 Excel 文件中检索到的数据存储到创建的表中
  3. 将对打开的每个工作表或 Excel 文件重复

我已经阅读了一些与此相关的其他帖子,它们都像网络应用程序上的上传文件输入框一样创建,

但我希望它在我运行网络应用程序后立即完成。

我真的很感激有关如何解决此问题的建议/帮助/指导,而无需上传文件或单击用户的任何内容。

为了实现您的目标,您可以尝试以下操作:

在您当前的项目根目录中创建一个Resource文件夹,并将您的 excel 文件放在该路径中。

var pathToExcelFile = Server.MapPath("~/Resource/Demo.xlsx");

如果您想从本地驱动器读取 excel 文件,例如D:驱动器:(请记住,不推荐这样做)

var pathToExcelFile = @"D:\Demo.xlsx"; 

然后你必须借助OleDb来读取 excel 文件数据。

string oleConnStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", pathToExcelFile);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", oleConnStr);
var ds = new DataSet();
adapter.Fill(ds, "ExcelTable");
DataTable dt = ds.Tables["ExcelTable"];

之后建立数据库连接并编写插入逻辑:

var mssqlConnStr = "Data Source= .; DataBase= Demo; Integrated Security = true;";

using (SqlConnection conn = new SqlConnection(mssqlConnStr))
{
       conn.Open();

       foreach (DataRow dataRow in dt.Rows)
       {
            var query = "INSERT INTO UserWiseSales (UserId, Sales) VALUES (@UserId, @Sales)";
            SqlCommand sqlCommand = new SqlCommand(query, conn);
            sqlCommand.Parameters.AddWithValue("@UserId", dataRow["UserId"].ToString());
            sqlCommand.Parameters.AddWithValue("@Sales", dataRow["Sales"].ToString());
            sqlCommand.ExecuteNonQuery();
       }
}

要在 Web 应用程序运行时立即运行上述代码,您必须将代码放在一个方法中,并从Global.asax.cs文件下的Application_Start方法调用它。

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM