如何实现网站上传Excel文件到SQL数据库操作? (网站上传excel到sql数据库吗)
在如今信息化的世界中,数据已经成为了企业运转的重要资源。通过将数据存储于数据库中,企业可以快捷地查找、维护和利用数据。而上传Excel文件至SQL数据库则是其中的一种常见操作。本文将以ASP.NET MVC框架为例,介绍如何实现网站上传Excel文件到SQL数据库操作。
一、创建数据库
需要创建数据库及表结构。这里以员工信息表格为例,创建一个名为“Employee”的表。表中包含姓名、性别、年龄、以及登录日期等五个字段。具体的SQL脚本如下:
“`
CREATE TABLE Employee (
ID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(50) NOT NULL,
Gender NVARCHAR(50) NOT NULL,
Age INT NOT NULL,
Phone NVARCHAR(50) NOT NULL,
CreateDate DATETIME NOT NULL
);
“`
二、创建Model
为了便于操作数据库,我们需要创建一个Model类,即“Employee”类,用于定义表中的字段。示例代码如下:
“`csharp
public class Employee
{
//定义表中字段
public int ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public DateTime CreateDate { get; set; }
}
“`
三、创建Controller
接下来,我们需要创建一个Controller类,用于实现上传Excel文件至SQL数据库的功能。我们需要在Controller类中添加一些命名空间引用:
“`csharp
using System.Data;
using System.Data.OleDb; //用于处理Excel文件
using System.Data.SqlClient; //用于操作SQL数据库
using System.IO;
“`
然后,我们需要添加以下代码,用于接收用户上传的Excel文件:
“`csharp
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
try
{
if (file != null)
{
string fileName = Path.GetFileName(file.FileName);
string path = Path.Combine(Server.MapPath(“~/App_Data/uploads”), fileName);
file.SaveAs(path);
string conString = string.Empty;
string extension = Path.GetExtension(file.FileName);
switch (extension)
{
case “.xls”: //Excel 97-03
conString = ConfigurationManager.ConnectionStrings[“Excel03ConString”].ConnectionString;
break;
case “.xlsx”: //Excel 07
conString = ConfigurationManager.ConnectionStrings[“Excel07ConString”].ConnectionString;
break;
}
DataTable dt = new DataTable();
conString = string.Format(conString, path);
using (OleDbConnection connExcel = new OleDbConnection(conString))
{
using (OleDbCommand cmdExcel = new OleDbCommand())
{
using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
{
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = dtExcelSchema.Rows[0][“TABLE_NAME”].ToString();
cmdExcel.CommandText = “SELECT * From [” + sheetName + “]”;
odaExcel.SelectCommand = cmdExcel;
odaExcel.Fill(dt);
connExcel.Close();
}
}
}
for (int i = 0; i
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConString”].ToString()))
{
using (SqlCommand cmd = new SqlCommand(“INSERT INTO Employee (Name, Gender, Age, Phone, CreateDate) VALUES (@Name, @Gender, @Age, @Phone, @CreateDate)”))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(“@Name”, dt.Rows[i][“Name”].ToString());
cmd.Parameters.AddWithValue(“@Gender”, dt.Rows[i][“Gender”].ToString());
cmd.Parameters.AddWithValue(“@Age”, dt.Rows[i][“Age”].ToString());
cmd.Parameters.AddWithValue(“@Phone”, dt.Rows[i][“Phone”].ToString());
cmd.Parameters.AddWithValue(“@CreateDate”, DateTime.Now);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
ViewBag.Message = string.Format(“{0} lines found in your file”, dt.Rows.Count);
}
else
{
ViewBag.Message = “Please select a file”;
}
}
catch (Exception ex)
{
ViewBag.Message = ex.ToString();
}
return View();
}
“`
以上代码便实现了将Excel文件中的数据批量插入至SQL数据库的功能。
四、创建视图
我们需要创建一个视图,用于上传Excel文件。示例代码如下:
“`html
@using (Html.BeginForm(“Upload”, “Home”, FormMethod.Post, new { enctype = “multipart/form-data” }))
{
@ViewBag.Message
}
“`
需要注意的是,此处的enctype属性必须设为“multipart/form-data”,否则将无法接收Excel文件。
五、
至此,我们便已经实现了网站上传Excel文件至SQL数据库的功能。通过以上方法,我们可以方便地将Excel中的数据导入至数据库中,从而快捷地管理和利用数据资源。