zoukankan      html  css  js  c++  java
  • 导入Excel表中的数据

    第一步:转换导入的文件

      private void btnSelectFile_Click(object sender, EventArgs e)
       {
           OpenFileDialog ofd = new OpenFileDialog();
           ofd.Title = "Excel文件";
           ofd.FileName = "";
           ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
           ofd.Filter = "Excel文件(*.xls)|*.xls";
           ofd.ValidateNames = true;
           ofd.CheckFileExists = true;
           ofd.CheckPathExists = true;
           if (openFileDialog.ShowDialog() == DialogResult.OK)
           {
               txtFileName.Text = openFileDialog.FileName;
           }
     
       }

     第二步:执行导入

        private void btnImport_Click(object sender, EventArgs e)
          {
              if (cboSaleStock.SelectedIndex == -1)
              {
                  MessageBox.Show("没有选择销售仓库");
                  return;
              }
              if (cboShop.SelectedIndex == -1)
              {
                  MessageBox.Show("没有选择销售门店");
                  return;
              }
              if (string.IsNullOrEmpty(txtFileName.Text) || txtFileName.Text.Length == 0)
              {
                  MessageBox.Show("没有选择Excel文件!无法进行数据导入");
                  return;
              }
              DataTable dt = ExcelToDataTable(txtFileName.Text);
              string sql = string.Empty;
              for (int i = 0; i < dt.Rows.Count; i++)
              {
                  sql += string.Format(@" declare @sno{4} int,@dgrID{4} varchar(20)
                                          set @dgrID{4}=(select top 1 dgoodsresultid from tbdGoodsResult where shopID='{0}' and stockid='{1}' and goodsid='{2}')
                                          if @dgrID{4} is null begin
                                              set @sno{4}=(select top 1 sno from tbpKeyManager where tablename='tbdGoodsResult')
                                              if @sno{4} is null begin
                                                  insert into tbpKeyManager(tablename,sno,trdate) values('tbdGoodsResult',1,CONVERT(varchar(12),getdate(),112 ))
                                                  set @sno{4}=1
                                              end else begin 
                                                  set @sno{4}=@sno{4}+1 
                                                  update tbpKeyManager set sno=sno+1 where tablename='tbdGoodsResult'
                                              end
                                              insert into tbdGoodsResult(dgoodsresultid,shopid,stockid,goodsid,pthismonthqty) 
                                              values(cast(@sno{4} as varchar(11)),'{0}','{1}','{2}','{3}')
                                          end else begin
                                              update tbdGoodsResult set pthismonthqty={3} where dgoodsresultid=@dgrID{4}
                                          end", cboShop.SelectedValue, cboSaleStock.SelectedValue, dt.Rows[i][2], dt.Rows[i][1], i);
              }
              string msg = "";
              if (ws.ExecuteNonQueryWithTrans(sql, ref msg) > 0)
              {
                  MessageBox.Show("导入数据成功");
              }
              if (msg.Length > 0)
              {
                  MessageBox.Show("导入数据失败:
    " + msg);
              }
          }

    第三步:Excel数据导入

          private DataTable ExcelToDataTable(string filePath)
          {
              //根据路径打开一个Excel文件并将数据填充到DataSet中
              string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
              OleDbConnection conn = new OleDbConnection(strConn);
              conn.Open();
              string strExcel = "";
              OleDbDataAdapter myCommand = null;
              DataSet ds = null;
              strExcel = "select  * from   [sheet1$]";
              myCommand = new OleDbDataAdapter(strExcel, strConn);
              ds = new DataSet();
              myCommand.Fill(ds, "table1");
              DataTable dt = ds.Tables[0];
              dt.Columns.Add("goodsid");
              string joinSql = "select '' pluno";
              foreach (DataRow dr in dt.Rows)
              {
                  joinSql += string.Format(" union all select '{0}' pluno", dr[0]);
              }
              string sql = string.Format(@"select tbgoods.goodsid,tbgoods.pluno from tbgoods join ({0}) as t on t.pluno=tbgoods.pluno ", joinSql);
              DataTable dtGoods = cf.GetDataSet(sql).Tables[0];
              foreach (DataRow dr in dt.Rows)
              {
                  foreach (DataRow dr1 in dtGoods.Rows)
                  {
                      if (dr[0].ToString().ToUpper() == dr1["pluno"].ToString())
                      {
                          dr["goodsid"] = dr1["goodsid"].ToString();
                      }
                  }
              }
              return ds.Tables[0];
          }
  • 相关阅读:
    SpringBoot dubbo
    springboot security 安全
    SpringBoot 异步 定时任务 邮件
    elastic search book [ ElasticSearch book es book]
    SpringBoot amqp MQ RabbitMQ
    为Nexus配置阿里云代理仓库【转】
    PLSQL表乱码
    hibernate注解的包
    Spring的refresh()方法相关异常
    spring3.1.1的各个jar作用
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/3651237.html
Copyright © 2011-2022 走看看