[英]Load data from local excel file to an ASP.NET MVC web app to store in database
我已经阅读了一些与此相关的其他帖子,它们都像网络应用程序上的上传文件输入框一样创建,
但我希望它在我运行网络应用程序后立即完成。
我真的很感激有关如何解决此问题的建议/帮助/指导,而无需上传文件或单击用户的任何内容。
为了实现您的目标,您可以尝试以下操作:
在您当前的项目根目录中创建一个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.