将excel数据导入到DataSet中

  // 1.将excel数据导入到DataSet中;
        //2.将DataSet里面的数据遍历插入到对应的数据库
        private void simpleButton6_Click(object sender, EventArgs e)
        {
            DataTable ds = getData().Tables[0];//得到要导入的excel数据,转化成数据源
            for (int j = 0; j < ds.Rows.Count; j++)
            {
                string part_id = ds.Rows[j][0].ToString();  //Rows[i]["col1"]表示i行"col1"字段  
                string proc_path = ds.Rows[j][1].ToString();
                string robot_no = ds.Rows[j][2].ToString();
                string mid_1 = ds.Rows[j][3].ToString();
                string mid_2 = ds.Rows[j][4].ToString();
                string mid_3 = ds.Rows[j][5].ToString();
                string cut1 = ds.Rows[j][6].ToString();
                string cut2 = ds.Rows[j][7].ToString();
                string num = ds.Rows[j][8].ToString();
                string dd = ds.Rows[j][9].ToString();
                insertMysqlDB(part_id, proc_path, robot_no, mid_1, mid_2, mid_3, cut1, cut2, num, dd);//更新数据到数据库
            }

            GridControl1.DataSource = null; //每次打开清空内容
            GridControl1.DataSource = ds;
            ShowData(0);
        }


        private DataSet getData()
        {
            //打开文件
            OpenFileDialog file = new OpenFileDialog();
            file.Filter = "Excel(*.xlsx)|*.xlsx|Excel(*.xls)|*.xls";
            file.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            file.Multiselect = false;
            if (file.ShowDialog() == DialogResult.Cancel)
                return null;

            //判断文件后缀
            var path = file.FileName;
            string fileSuffix = System.IO.Path.GetExtension(path);
            if (string.IsNullOrEmpty(fileSuffix))
                return null;
            using (DataSet ds = new DataSet())
            {
                //判断Excel文件是2003版本还是2007版本
                string connString = "";
                if (fileSuffix == ".xls")
                    connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
                else
                    connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";

                //读取文件
                string sql_select = " SELECT * FROM [Sheet1$]";
                using (OleDbConnection conn = new OleDbConnection(connString))
                using (OleDbDataAdapter cmd = new OleDbDataAdapter(sql_select, conn))
                {
                    conn.Open();
                    cmd.Fill(ds);
                }
                if (ds == null || ds.Tables.Count <= 0) return null;
                return ds;
            }
        }


        private void insertMysqlDB(string part_id, string proc_path, string robot_no, string mid_1, string mid_2, string mid_3, string cut1, string cut2, string num, string dd)
        {
            //插入数据到数据库
            if (mysqlcon.State == ConnectionState.Closed)
                mysqlcon.Open();//打开通道,建立连接,可能出现异常,使用try catch语句
            MySqlTransaction transaction = mysqlcon.BeginTransaction();//事务必须在try外面赋值不然catch里的transaction会报错:未赋值
            try
            {
                //在这里使用代码对数据库进行增删查改,新增
                //string updatesql1 = "update product set  proc_path='" + name + "',part_id='" + sn + "',robot_no = " + Int16.Parse(quantity) + ",mid_1=" + float.Parse(mid_1) + ",mid_2=" + float.Parse(mid_2) + ",mid_3=" + float.Parse(mid_3) + "," +
                //                 " dd=" + float.Parse(dd) + ",proc_len=" + float.Parse(cut1) + ",proc_len_end=" + float.Parse(cut2) + ",num = " + Int16.Parse(num) + "";
                string intsqls1 = "insert into ikm_shenfei.product  (part_id,proc_path, num,robot_no,mid_1,mid_2,mid_3,proc_len,proc_len_end,dd) Values" +
                            " ('" + part_id + "', '" + proc_path + "', " + Int16.Parse(num) + "," + robot_no + ", " + float.Parse(mid_1) + "," + float.Parse(mid_2) + ", " + float.Parse(mid_3) + ", " + float.Parse(cut1) + ", " + float.Parse(cut2) + ",  " + float.Parse(dd) + ") ";//新增数值

                MySqlCommand cmd = new MySqlCommand(intsqls1, mysqlcon);
                cmd.ExecuteNonQuery();
            }
            catch (MySqlException ex)
            {
                Console.WriteLine(ex.Message);
                transaction.Rollback();//事务ExecuteNonQuery()执行失败报错
                mysqlcon.Close();
            }
            finally
            {
                if (mysqlcon.State != ConnectionState.Closed)
                {
                    transaction.Commit();//事务要么回滚要么提交,即Rollback()与Commit()只能执行一个
                    //conn.Close();
                }
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值