asp.net Excel导入到数据库方法
摘要:Excel导入到数据库其实很简单,思路就是读取excel表的数据,存放到DataSet中,然后验证DataSet中的数据,再将DataSet中的数据添加到数据库中即可
导入数据到数据库中会存在一个路劲问题,这里我来给大家看看我的思路
在向数据库导入数据的时候,在服务器端根据时间,先新建一个目录,然后将要导入的Excel文件复制到
刚建的目录下,这样服务器端在从Excel中读取数据的时候就不会出现路径的问题了,最后读取完Excel后,删除新建的
目录即可。
1.上传到服务器
protected void ExcelImport_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); Regex regex = new Regex(".+//.xls$"); //客户端导入Excel的路径 string filepath = FileUpload1.PostedFile.FileName; //找到服务器端的目录结构 string NewPath = Server.MapPath("~/File/"); if (filepath != "") { if (regex.Match(filepath).Success) { DateTime dt = DateTime.Now; ConvertNum CN = new ConvertNum(); //根据时间创建目录名称 string fileName = dt.Year.ToString() + CN.ConvertOneToTwo(dt.Month.ToString()) + CN.ConvertOneToTwo(dt.Day.ToString()) + CN.ConvertOneToTwo(dt.Hour.ToString()) + CN.ConvertOneToTwo(dt.Minute.ToString()) + CN.ConvertOneToTwo(dt.Second.ToString()); NewPath = NewPath + fileName + Path.DirectorySeparatorChar; NewPath = NewPath.Replace("//", "////"); if (!Directory.Exists(NewPath)) { //创建目录结构 Directory.CreateDirectory(NewPath); } //将文件保存到新建的目录结构下面 FileUpload1.SaveAs(NewPath + "UserInfo.xls"); //读取Excel数据到DataSet集合中 ds = ExcelToDS(NewPath + "UserInfo.xls", NewPath); } else { Response.Write("<mce:script type="text/javascript"><!-- alert('您选择的不是Excel文件,请重新选择!');window.location.href='ZhxxExcelImport.aspx'; // --></mce:script>"); } } else { Response.Write("<mce:script type="text/javascript"><!-- alert('您还没有选择Excel文件,请选择!');window.location.href='ZhxxExcelImport.aspx'; // --></mce:script>"); } }取得Excel的数据存到DataSet集合中的方法:
public DataSet ExcelToDS(string path,string PathFather) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source="+path+";" + "Extended Properties=Excel 8.0"; OleDbConnection conn = new OleDbConnection(strConn); string strExcel = ""; OleDbDataAdapter myCommand = null; DataSet ds = null; //从Excel的一个工作表中导入数据到数据库中 strExcel = "select 门牌号,用户名,用户人口数目,用户住房面积,用户取暖面积,用户电话,用户工作单位,用户数据类型 from [Sheet1$]"; try { myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); } catch (Exception e) { conn.Close(); myCommand.Dispose(); } finally { //最后将新建的目录结构删除掉 if (Directory.Exists(PathFather)) { Directory.Delete(PathFather, true); } } return ds; }这样就完成了,如果大家在使用中遇到一些什么问题,可以直接留言给我,我会马上和你探讨