将EXCEL 数据导入到 DataGrid中

本文介绍了一种将Excel文件上传并解析至DataSet的方法。通过使用OLE DB连接读取Excel文件内容,实现表单数据的展示。同时提供了获取Excel中所有工作表名称的功能。

 //=============================
  //查看Excel 数据
  private void btnCheckExcle_Click(object sender, System.EventArgs e)
  {
   if (File1.PostedFile!=null)
   {
    //1. 保存于服务器,磁盘 ; 获取绝对路径
    string fullFileName = File1.PostedFile.FileName;   
    string fileName = fullFileName.Substring(fullFileName.LastIndexOf("//") + 1);
    fileName = DateTime.Now.Date.ToString("yyyymmdd") +fileName;
    string theFilePath = @Server.MapPath("excelFiles/") + fileName;
    File1.PostedFile.SaveAs(theFilePath);  
    
    //2. 获取Excel中的,表名
    ArrayList al = ExcelSheetName(theFilePath);
    string sheetName = (string)al[0];    

    //2. 导入到DataSet中
    DataSet ds = this.ExcelDataSource(theFilePath,sheetName);
    this.dgShow.DataKeyField = "No";
    this.dgShow.DataSource = ds;
    this.dgShow.DataBind();
   }
  }

 

//-----------------------------------------
  //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表;
  public DataSet ExcelDataSource( string filepath , string sheetname )  
  {
   string strConn;
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
   OleDbConnection conn = new OleDbConnection(strConn);
   string strSql = string.Format(@"select * from [{0}]",sheetname);
   OleDbDataAdapter oada = new OleDbDataAdapter(strSql,strConn);
   DataSet ds = new DataSet ();
   oada.Fill(ds);
   return ds ;
  }

  //获得Excel中的所有sheetname。 filepath 为绝对路径
  public ArrayList ExcelSheetName ( string filepath )
  {
   ArrayList al = new ArrayList ();
   string strConn;
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
   OleDbConnection conn = new OleDbConnection(strConn);
   conn.Open ();
   DataTable sheetNames = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
   conn.Close ();
   foreach ( DataRow dr in sheetNames.Rows )
   {
    al.Add ( dr[2] );
   }
   return al;
  }

//-------------------

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值