需求:
客户上传excel订单表 他有自己的字段名称,现在要根据这张excel的商品名称查询数据的产品表的产品是否存在。如果存在就把这张excel导入到数据库并且还新增数据产品表的价钱这列.
我的难点
现在要根据这张excel的商品名称查询数据的产品表的产品是否存在
(我的想法是先查询一条excel数据的商品名称.在去数据库查有就返回商品价钱,没有就返回0.并且把价钱这列加到excel。然后全部导入到数据表中.不知道是否是正确的而且具体的我也不会写)。
有哪位前辈能告诉最好用代码写出来。也可以QQ发给我:505608653。
最后50分了, 没办法给多了。

解决方案 »

  1.   

    想法是可以的,必须确保客户上传的excel格式是固定的,这样才可以从excel读数据,读取之后插入到数据库。读取代码的方法很多网上搜索一下
      

  2.   

    这哥们说的对 必须把格式固定了  然后取到产品 在后台做下比较 有就返回1撒 
     public void bindExcel(string name)
            {
                // 读取Excel数据,填充DataSet
                // 连接字符串 
                string ph = string.Format("Upload\\{0}", name);
                string xlsPath = Server.MapPath(ph);
                string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";" + // 指定扩展属性为 Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且第一行作为数据返回,且以文本方式读取
                                "data source=" + xlsPath;
                string sql_F = "SELECT * FROM [{0}]";            OleDbConnection conn = null;
                OleDbDataAdapter da = null;
                DataTable tblSchema = null;
                IList<string> tblNames = null;            // 初始化连接,并打开
                conn = new OleDbConnection(connStr);
                conn.Open();            // 获取数据源的表定义元数据                        
                //tblSchema = conn.GetSchema("Tables");
                tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });            //GridView1.DataSource = tblSchema;
                //GridView1.DataBind();            // 关闭连接
                //conn.Close();            tblNames = new List<string>();
                foreach (DataRow row in tblSchema.Rows)
                {
                    tblNames.Add((string)row["TABLE_NAME"]); // 读取表名
                    if (tblNames[0].ToString() == "Sheet1$")//只取第一个
                        break; ;
                }            // 初始化适配器
                da = new OleDbDataAdapter();
                // 准备数据,导入DataSet
                DataSet ds = new DataSet();
                foreach (string tblName in tblNames)
                {
                    da.SelectCommand = new OleDbCommand(String.Format(sql_F, tblName), conn);
                    try
                    {
                        da.Fill(ds, tblName);
                    }
                    catch
                    {
                        // 关闭连接
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                        throw;
                    }
                }            // 关闭连接
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }            // 对导入DataSet的每张sheet进行处理        
                // 这里仅做显示
                //gd.DataSource = ds.Tables[0];
                //gd.DataBind();                     }
      

  3.   

    PS:我的做法是Excel上传之后的,存的是绝对路径,
    通过一个导入事件获取路径,这里只贴了Excel导入的方法,
    代码没怎么整理,你就凑合着用吧,看是否有帮助!