ASP.NET将Excel数据导入到数据库
ASP.NET将Excel数据导入到数据库
protected void btnImport_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (IsXls != ".xls" && IsXls != ".xlsx")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数
string savePath = Server.MapPath(("upfiles\\\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = ExcelSqlConnection(savePath, filename, IsXls); //调用自定义方法
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
}
else
{
//前面除了你需要在建立一个“upfiles”的文件夹外,其他的都不用管了,你只需要通过下面的方式获取Excel的值,然后再将这些值用你的方式去插入到数据库里面
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
{
DataTable dt = ds.Tables[0];
bcp.BatchSize = 100;//每次传输的行数
bcp.NotifyAfter = 100;//进度提示的行数
bcp.DestinationTableName = tb2.Text;//需要导入的数据库表名
//excel表头与数据库列对应关系
bcp.ColumnMappings.Add("物料编码", "CODE");
bcp.ColumnMappings.Add("物料名称", "NAME");
bcp.ColumnMappings.Add("状态", "STATUS");
bcp.ColumnMappings.Add("物料说明", "MEMO");
bcp.ColumnMappings.Add("创建人帐号", "CREATOR");
bcp.ColumnMappings.Add("创建时间", "CREATEDATE");
bcp.ColumnMappings.Add("计量单位", "Unit");
bcp.WriteToServer(dt);
}
Response.Write("<script>alert('Excle表导入成功!');</script>");
}
}
连接Excel 读取Excel数据 并返回DataSet数据集合