欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法

程序员文章站 2024-02-12 20:16:22
本文实例讲述了asp.net实现将excel中多个sheet数据导入到sqlserver中的方法。分享给大家供大家参考,具体如下: public dataset...

本文实例讲述了asp.net实现将excel中多个sheet数据导入到sqlserver中的方法。分享给大家供大家参考,具体如下:

public dataset getdataset(string filepath)
{
  string connstr = string.format("provider=microsoft.jet.oledb.4.0;data source='" + filepath + "';extended properties='excel 8.0;hdr=yes;imex=1'");
  oledbconnection conn = new oledbconnection(connstr);
  //创建arraylist对象 存放所有sheetname 
  arraylist sheetnamelist = new arraylist();
  //获取配置excel中sheet总数(这里是根据项目需求配置的) 如果需要导入excel表格所有sheet数据则将此代码删除
  int sheetcount = convert.toint32(configurationmanager.appsettings["sheetcount"].tostring());
  dataset dsexcel = new dataset();
  try
  {
   if (conn.state == connectionstate.closed)
   {
    conn.open();
   }
   datatable dtexcelschema = conn.getoledbschematable(oledbschemaguid.tables, new object[] { null, null, null, "table" });
   string sheetname = string.empty;
   if (dtexcelschema.rows.count > sheetcount)
   {
    page.registerstartupscript("", "<mce:script type="text/javascript"><!--
alert('很抱歉!你上传excel文件sheet总数过多不能大于10个sheet..!! ')
// --></mce:script>");
    return;
   }
   else
   {
    for (int j = 0; j < dtexcelschema.rows.count; j++)
    {
     sheetname = string.format("sheet{0}$", j + 1);
     sheetnamelist.add(sheetname);
    }
   }
  }
  catch (exception ex)
  {
   throw new exception(ex.message.tostring(), ex);
  }
  finally
  {
   conn.close();
  }
  try
  {
   string strsql = string.empty;
   for (int i = 0; i < sheetnamelist.count; i++)
   {
    strsql = "select * from [" + sheetnamelist[i].tostring() + "]";
    oledbdataadapter da = new oledbdataadapter(strsql, conn);
    datatable dtexcel = new datatable(sheetnamelist[i].tostring());
    da.fill(dtexcel);
    dsexcel.tables.add(dtexcel);
   }
   return dsexcel;
  }
  catch (exception ex)
  {
   throw new exception(ex.message.tostring(), ex);
  }
 }
 //从excel 表中取出数据 将取出来的数据插入到数据库中
 public void insertdata(dataset ds) {
   string strsql=string.empty;
   if (ds.tables[0].rows.count > 0)
   {
    for (int j = 0; j < ds.tables.count; j++) 
    { 
    for(int i=0;i<ds.tables[j].rows.count;i++)
    {
     datarow dr=ds.tables[j].rows[i];
     //组名
     string groupname = dr["组名"].tostring().trim();
     //联系人
     string contactname = dr["联系人"].tostring().trim();
     //手机号码
     string mobile = dr["手机号码"].tostring().trim();
     //公司名称
     string companyname = dr["公司名称"].tostring().trim();
     //公办号码
     string officenum = dr["办公号码"].tostring().trim();
     //家庭号码
     string homenum = dr["家庭号码"].tostring().trim();
     //邮箱
     string email = dr["邮 箱"].tostring().trim();
     //联系地址
     string address = dr["联系地址"].tostring().trim();
     //创建时间
     string createtime = dr["创建时间"].tostring().trim();
     //性别
     string sex = dr["性别"].tostring().trim();
     //手机套餐类型
     string mobiletype = dr["手机套餐类型"].tostring().trim();
     //是否开通通信助理
     string isopen = dr["是否开通通信助理"].tostring().trim();
     //sql 语句
     strsql = "insert into msm_excel(groupname,mobile,name,companyname,officenum,homenum,emial,address,createtime,sex,mobiletype,isopen)values('" + groupname + "','" + mobile + "','" + contactname + "','" + companyname + "','" + officenum + "','" + homenum + "','" + email + "','" + address + "','" + createtime + "','" + sex + "','" + mobiletype + "','" + isopen + "')";
     try
     {
      int n = sqlhelper.sqldataexecute(strsql);
      if (n > 0)
      {
       page.registerstartupscript("", "<mce:script type="text/javascript"><!--
alert('数据插入成功!')
// --></mce:script>");
       label1.text = "一共成功插入" + ds.tables[j].rows.count.tostring() + "条数据";
      }
      else
      {
       page.registerstartupscript("", "<mce:script type="text/javascript"><!--
alert('服务器繁忙!请稍候再试..!')
// --></mce:script>");
      }
     }
     catch (exception ex)
     {
      throw ex;
     }
    }
   }    
  }
  else {
   page.registerstartupscript("", "<mce:script type="text/javascript"><!--
alert('此excel文件中无数据!!!')
// --></mce:script>");
  }
 }
//调用
//获取上传文件名
  string filename = fileupload1.filename;
   //判断是否存在上传文件
  if (fileupload1.postedfile.filename.length == 0) {
   page.registerstartupscript("", "<mce:script type="text/javascript"><!--
alert('请选择你要上传的excel文件!!')
// --></mce:script>");
  }
   //判断上传的文件类型是否正确
  else if (!path.getextension(fileupload1.postedfile.filename).tolower().equals(".xls") && !path.getextension(fileupload1.postedfile.filename).tolower().equals(".xlsx"))
  {
   page.registerstartupscript("", "<script>alert('很抱歉!你上传的文件类型不正确!只能上传excel类型的文件!')</script.");
  }
  else
  {
   //获取上传的文件路径
   filepath = server.mappath("txtfiles//") + datetime.now.tostring("yyyymmddhhmmss") + filename;
   this.fileupload1.postedfile.saveas(filepath);
   ds = getdataset(filepath);
   insertdata(ds);
  }

希望本文所述对大家asp.net程序设计有所帮助。