zoukankan      html  css  js  c++  java
  • c# excel如何导入到sqlserver数据库

    最近在做这个如何把excel导入到数据库中,经过多方查找,终于找到一个适合的,并且经过自己的完善可以正常使用(忘记原作者博客的链接地址了,敬请见谅)

    1. 首先是窗体的创建,文本框显示文件的路径,按钮执行操作,DataGridView显示导入的信息
    2. 代码如下:可根据自己的需求进行修改,我是要导入之后就对我的另一窗体进行刷新,定义了委托,你们可以忽略。

              //定义委托
              public delegate void Refresh();
      
              //定义事件
              public event Refresh myRefresh;
              public ExcelRoprtForm()
              {
                  InitializeComponent();
              }
      
              private void button1_Click(object sender, EventArgs e)
              {
                  //选中导入的文件
                  try
                  {
                      //openFileDialog1.Filter = "Excel 文件|*.xls";//指定存放文件格式类型
                      OpenFileDialog fd = new OpenFileDialog();
                      fd.Filter = "Excel文件(*.xls,xlsx)|*.xls;*.xlsx";
                      if (fd.ShowDialog() == DialogResult.OK)
                      {
                          string fileName = fd.FileName.ToString();
                          this.textBox1.Text = fileName;
                      }
      
                  }
                  catch (Exception ee)
                  {
                      MessageBox.Show("打开文件出错!" + ee.Message.ToString());
                  }
              }
      
              private DataSet xsldata(string filepath)
              {
                  string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;IMEX=1'";
      
                  //string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + filepath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
      
                  System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(strCon);
      
                  string strCom = "SELECT * FROM [Sheet1$]";
      
                  Conn.Open();
      
                  System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, Conn);
      
                  DataSet ds = new DataSet();
      
                  myCommand.Fill(ds, "[Sheet1$]");
                  dataGridView1.DataSource = ds.Tables[0];
                  Conn.Close();
                  return ds;
              }
              private void button2_Click(object sender, EventArgs e)
              {
                  if (textBox1.Text == "")
                  {
                      MessageBox.Show("请选择要导入的Excel文档!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                      return;
                  }
                  string filepath = textBox1.Text;
                  string strcon1 = ConfigurationManager.ConnectionStrings["connString"].ToString();
                  SqlConnection conn = new SqlConnection(strcon1);//链接数据库
                  conn.Open();
                  try
                  {
                      DataSet ds = new DataSet();
                      //取得数据集
                      //调用上面的函数
                      ds = xsldata(filepath);
                      int errorcount = 0;//记录错误信息条数
      
                      int insertcount = 0;//记录插入成功条数
      
                      int updatecount = 0;//记录更新信息条数
      
                      for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                      {
                          string carnumber = ds.Tables[0].Rows[i][0].ToString();
                          int carstatus = Convert.ToInt32(ds.Tables[0].Rows[i][1].ToString());
                          int cartype = Convert.ToInt32(ds.Tables[0].Rows[i][2].ToString());
                          string carbrand = ds.Tables[0].Rows[i][3].ToString();
      
                          if (carnumber != "" && carstatus != 0 && cartype != 0)
                          {
                              SqlCommand selectcmd = new SqlCommand("select count(*) from CarInfo where CarNumber='" + carnumber + "'", conn);
                              
                              int count = Convert.ToInt32(selectcmd.ExecuteScalar());
                              if (count > 0)
                              {
                                  updatecount++;
                              }
                              else
                              {
                                  SqlCommand insertcmd = new SqlCommand("insert into CarInfo(CarNumber,CarStatusID,CarTypeID,CarBrand) values(" + "'" + carnumber + "'," + carstatus + "," + cartype + ",'" + carbrand + "'" + ")", conn);
      
                                  insertcmd.ExecuteNonQuery();
      
                                  insertcount++;
      
                              }
                          }
                          else
                          {
                              //MessageBox.Show("电子表格信息有错!");
                              errorcount++;
                          }
                      }
                      myRefresh();
                      MessageBox.Show(insertcount + "条数据导入成功!" + updatecount + "条数据重复!" + errorcount + "条数据部分信息为空没有导入!");
                  }
                  catch (Exception ex)
                  {
      
                      MessageBox.Show(ex.Message);
                  }
      
                  finally
                  {
                      conn.Close();
      
                  }
              }
      

        

  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/qinmoran123/p/10535027.html
Copyright © 2011-2022 走看看