700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ASP.NET实现excel导入数据库

ASP.NET实现excel导入数据库

时间:2018-09-08 20:04:25

相关推荐

ASP.NET实现excel导入数据库

1:说明:此方法建立在已经实现数据库的插入功能上

2:注解:2.1:新建一个文件夹存放excel文件(见example.aspx.cs的GetExcel()方法)

2.2:控件

2.3:excel表格式(excel表头与数据库表字段对应)

2.4:修改数据库插入方法(见example.aspx.cs的InsetData()方法)

3:步骤:1:前台控件:

1.1:FileUpload;

1.2:Button;

2:后台响应程序

2.1:将excel上传到服务器;

2.2:Excel数据导入System.Data.DataTable;

2.3:从System.Data.DataTable导入数据到数据库

4:代码:

4.1:example.aspx

<div style="margin-top: 0px; margin-left: 0px;"><div style="height: 38px"><asp:Label ID="Label1" runat="server" Text="文件*:" Width="60px"></asp:Label><asp:FileUpload ID="fulImport" runat="server" Height="20px" Width="450px" /><asp:Button ID="btnImport" runat="server" Text="一键上传" Width="80px" Height="20px" OnClick="btnImport_Click" /></div>

4.2:example.aspx.cs

//上传excel数据到数据库------------------------------------------>protected void btnImport_Click(object sender, EventArgs e) {//1:将excel上传到服务器;string fileUrl = this.GetExcel();//2:将excel数据导入数据库this.InsetData(this.GetExcelDatatable(fileUrl));}//1:客户端上传excel到服务器//@return:fileUrl 服务器文件路径protected string GetExcel(){string fileUrl = "";#region 文件上传try{//全名 string excelFile = this.fulImport.PostedFile.FileName;//获取文件名(不包括扩展名) string fileName = Path.GetFileNameWithoutExtension(fulImport.PostedFile.FileName);//扩展名 string extentionName = excelFile.Substring(excelFile.LastIndexOf(".") + 1);if (fileName == "" || fileName == null){Response.Write("<script>alert('请先选择Excel文件!')</script>");return null;}if (extentionName != "xls" && extentionName != "xlsx"){Response.Write("<script>alert('您上传的不是Excel文件!')</script>");return null;}//浏览器安全性限制 无法直接获取客户端文件的真实路径,将文件上传到服务器端 然后获取文件源路径 #region 设置上传路径将文件保存到服务器string dateTime = DateTime.Now.Date.ToString("yyyyMMdd");string time = DateTime.Now.ToShortTimeString().Replace(":", "");string newFileName = dateTime + time + DateTime.Now.Millisecond.ToString() + ".xls"; ;//自己创建的文件夹 位置随意 合理即可 fileUrl = Server.MapPath("..\\excel") + "\\" + newFileName;this.fulImport.PostedFile.SaveAs(fileUrl);//Response.Write("<script>alert('已经上传到服务器文件夹')</script>");return fileUrl;#endregion}catch{Response.Write("<script>alert('数据上传失败,请重新导入')</script>");return null;}#endregion}//2:Excel数据导入Datable//@param fileUrl 服务器文件路径//@return System.Data.DataTable dt protected System.Data.DataTable GetExcelDatatable(string fileUrl){//office之前 仅支持.xls//const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";//支持.xls和.xlsx,即包括office等版本的 HDR=Yes代表第一行是标题,不是数据;const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";System.Data.DataTable dt = null;//建立连接OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));//打开连接if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed){conn.Open();}System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获取Excel的第一个Sheet名称string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();//查询sheet中的数据string strSql = "select * from [" + sheetName + "]";OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);DataSet ds = new DataSet();da.Fill(ds);dt = ds.Tables[0];return dt;}//3:从System.Data.DataTable导入数据到数据库//@param System.Data.DataTable dtprotected void InsetData(System.Data.DataTable dt){int i = 0;string MATER_ID = "";string MATER_NAME = "";string MATER_COUNT = "";string MATER_SPEC = "";string MATER_COMPANY = "";string MATER_TIME = "";foreach (DataRow dr in dt.Rows){//此处遍历获取excel的数据MATER_ID = dr[0].ToString().Trim();MATER_NAME = dr[1].ToString().Trim();MATER_COUNT = dr[2].ToString().Trim();MATER_SPEC = dr[3].ToString().Trim();MATER_COMPANY = dr[4].ToString().Trim();MATER_TIME = dr[5].ToString().Trim();//此处执行你的数据库插入语句即可string strInsert = "insert into '你的数据库名'.'你的表名' (MATER_ID,MATER_NAME,MATER_COUNT,MATER_SPEC,MATER_COMPANY,MATER_TIME) values(" + MATER_ID + ",'" + MATER_NAME + "'," + MATER_COUNT + ",'" + MATER_SPEC + "','" + MATER_COMPANY + "',to_date('" + MATER_TIME + "','yyyy-mm-dd hh24:mi:ss'))";int count = new Data().ExecuteNonQuery(strInsert);if (count != 0){i++;}else{Alert("导入失败,数据格式出错!!");}}if (i == dt.Rows.Count){Alert("导入成功:共导入" + i + "组数据!!");}else {Alert("未完全导入:共导入" + i + "组数据!!");}Search();}//--------------------------------------------------------------->

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。