一、导入Excel的界面 这个界面很简单,代码就不列出来了。二、导入的代码我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里。这里需要注意的是当程序在服务器运行时,要先把导入的文件上传到服务器上,否则不能导入,会出现莫名奇妙的错误,为了改这个错误当初弄了好久,希望大家不要走我的弯路啊。如果是在自己的机器上就不用上穿文件。第二部分是选择相应的表,然后将数据导入到表里面,这部分很简单。1、
try![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedBlockStart.gif) { InputDataBLL input = new InputDataBLL(); this.Label1.Text = ""; if (this.FileUpload1.HasFile)![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { // string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim(); DataTable inputdt = new DataTable(); int len = this.FileUpload1.FileName.ToString().Trim().Length; string path = "~/temp/upfile/"+this.FileUpload1 .FileName .ToString ().Trim(); path = Server.MapPath(path); this.FileUpload1.SaveAs(path); //上传文件 inputdt = input.InputExcel(path, this.FileUpload1.FileName.ToString().Trim().Substring(0, len - 4),this.TextBox1.Text.Trim ()); if (Session["inputdt"] != null) Session.Remove("inputdt"); Session.Add("inputdt", inputdt); if (inputdt.Rows.Count > 0)![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { this.GridView1.DataSource = inputdt; this.GridView1.DataBind(); } } else throw new Exception("请选择导入表的路径"); } catch (Exception ex)![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedBlockStart.gif) { Response.Write("alert('" + ex.Message + "');"); }
导入的函数
![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//// /// 导入数据到数据集中 /// /// /// /// 如果这个有就以他为表名,没有的话就以TableName /// public DataTable InputExcel(string Path,string TableName,string tablename2)![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedBlockStart.gif) { try![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; if (tablename2.Length > 0 && !tablename2.Equals(string.Empty)) TableName = tablename2; strExcel = "select * from [" + TableName + "$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); DataTable dt = new DataTable(); myCommand.Fill(dt); conn.Close(); return dt; } catch (Exception ex)![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { throw new Exception(ex.Message); } }
二、将数据导入到数据库里这部分其实很简单,就是插入数据。
if (this.DropDownList1.SelectedItem.Text.ToString().Equals("Material"))//导物料![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedBlockStart.gif) { new StockBaseBLL().ISUserModel("物料导入", Response, Request, Server); MaterialBLL material = new MaterialBLL(); foreach (DataRow row in inputdt.Rows)//inputdt为刚刚从函数中返回的数据源![](http://www.cnblogs.cc2/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { float MaterialPrice = 0.0f; float MaterialTaxPrice = 0.0f; float TaxRate = 0.0f; float Moneys = 0.0f; int temp=0; if (row["单价"].ToString().Trim() != "") MaterialPrice = float.Parse(row["单价"].ToString().Trim()); if (row["含税单价"].ToString().Trim()!="") MaterialTaxPrice=float.Parse(row["含税单价"].ToString().Trim()); if (row["税率"].ToString().Trim()!="") TaxRate= float.Parse(row["税率"].ToString().Trim()); if (row["金额"].ToString().Trim()!="") Moneys=float.Parse(row["金额"].ToString().Trim());![](http://www.cnblogs.cc2/Images/OutliningIndicators/InBlock.gif) if (material.SelectMaterialsDynamic("MaterialID='" + row["物料长代码"].ToString() + "'", "").Rows.Count 0) index += temp; temp = 0; } }
|